0

短い答えはNOになるので、答えが必要なわけではありません。この質問は、jQueryフォーラムからGoogleコードフォーラム、そしてここStackOverflowで対処されていない問題であるため、さらに提起します。

私は、標準のカセットテープレコーダーを使用してデータをバックアップする最初のコモドール16を入手して以来、プログラマーです(そうです...私はそんなに年をとっています)。それ以来、多くのプログラミング言語のコーディング手法で普遍的に準拠した標準を作成するための長くて面倒な戦いがありました。W3Cはこれまでで最も近いものです。

私自身の意見では、jQuery Mobile(jQm)を使用していくつかのアプリを作成した後、jQmは、まさにこの理由でうまく実装されなかった良いアイデアだと思います。jQmは、独自のCSSを非準拠の方法で実装することを決定し、開発者はjQmによる独自の「標準準拠」の補足CSSのハイジャックと戦うことになりました。皆さん、CSSのCは「カスケード」を意味します。つまり、前のスタイル宣言に続くスタイル宣言が、前にあるスタイルよりも優先されます。jQm CSSには当てはまらないため、標準に準拠していません。

私は、jQmのCSSハイジャック動作(jQueryのCSS、@ imports、インラインスタイルの後にロードされる外部CSSファイル...名前を付けます)を回避するために、独自の標準準拠CSSを実装する多くの方法を試しました。jQm CSSがロードされた後、jQmCSSに含まれるスタイルを自分のCSSで実際にオーバーライドする以外に。つまり...これは、そもそもjQmを使用する利点を完全に否定するものではありませんか?

私の議論を指します。自分の「標準に準拠した」CSSで「オーバーライド」する必要がある場合、またはjQm CSS自体を微調整する必要がある場合(これにより、既存のjQmCSSをテーマローラーにインポートできるという利点がなくなります。後で別のスタイルを追加するために)、最初に独自のUIを作成することもできます。

jQueryとCSS3のトランジションを使用すると、独自のトランジションを簡単に作成できるため、jQmのトランジションを使用することでメリットが得られます。jQmによるマウスイベントのタッチコントロールへの変換はすでに廃止されています。ほとんどの主要なブラウザは、タブレットやタッチスクリーンラップトップのデスクトップ世界環境への登場により、これをすでに完成させていますが、jQmとは異なり、標準に準拠しています。次に、jQmのデフォルトのajaxナビゲーション動作があります。これは、jQuery独自の豊富なXMLHttpRequest短縮メソッド($ .ajax、$。get、$。post、および$ .getJSON)を使用して、オーバーヘッドを減らし、パフォーマンスを向上させて簡単に実装できます。では、なぜjQmを使用するのでしょうか。

私自身、jQmを使い果たしました。これは、jQmの非準拠のCSS動作との戦いに費やした時間が、最初に独自の標準準拠のUIを作成するのにかかる時間を超えているためです。私は標準への準拠を固く信じており、非準拠のアプリ(IEのように...ああ、いや、大声で言ったのか!)と20年以上戦わなければなりませんでした。

私自身...これからは、標準に準拠したHTML5とCSS3を使用してすべてのアプリを作成します。これには、準拠したコーディングをモバイルデバイス独自のSDKにラップすることで、さまざまなモバイルデバイスに簡単にデプロイできるという追加の利点があります。それを行うように設計されており、モバイルデバイス自体の機能(加速度計、コンパス、カメラなど)を使用できるというさらに別の強力な利点があります。

私は常にオープンマインドを保っているので、この問題についてのフィードバックを聞きたいと思います。また、自分の経験に基づいて自分で下した決定を再考する良い円卓会議が大好きです。

更新これは、この質問で参照しているものを説明する例とjsfiddleです。

<style>
.my_link a:link{ color:#00cc00 }
</style>

<div data-role="page" data-theme="a">
<p><a href="#">
Link using default jQm CSS</a></p>
<p><a href="#" class="my_link">
Link using CSS class declared in HEAD after jQm CSS</a></p>
<p><a href="#"> style="color:#00cc00">
Link using inline CSS declared after jQm CSS</a></p>
</div>

http://jsfiddle.net/Ephiphany/S7NuK/

4

1 に答える 1

1

JQMスタイル(またはそれに関する任意のスタイル)をオーバーライドするには、cssセレクターがJQMのスタイルシートで使用されているものよりも具体的である必要があります。

たとえば、次のページに1つのリンクがあるとします。

<div data-role="page" data-theme="a" data-url="/Ephiphany/S7NuK/show/" tabindex="0" class="ui-page ui-body-a ui-page-active" style="min-height: 209px;">
  <p class="my_p"><a href="#" class="my_link ui-link">Link using default jQm CSS</a></p>
</div>

JQMには次のスタイルがあります。

.ui-body-a .ui-link:link {
    color: #2489CE;
}

CSSの特異性は、優先順位の層があるという点で優先順位システムです。インラインスタイル>ID>クラス/属性/状態>タグ名/疑似要素

これを念頭に置いて、IDが必要か、2つのクラスを使用する必要があります。たとえば、JQMスタイルシートの後に来る場合、これはオーバーライドします。

.my_p .my_link:link { 
    color: #00cc00
}

http://jsfiddle.net/S7NuK/2/

:visited :hover :activeなどを忘れないでください。

于 2012-11-15T22:41:32.610 に答える