2

CSSの原則に従って、スタイルの再利用性を実装するclass場合は属性を使用し、DOM構造全体に一意の要素があることがわかっている場合は、idその要素の属性を使用してからスタイルを指定する必要があります。

しかし、このWebアプリケーションの時代では、DOM構造が複雑になりすぎて、重複する可能性がありidます。最良の例はです#title。ドキュメントのどこにでも表示できる種類の名前。ここで最良の部分は、CSSが生成する出力が同じである場合、#titleまたは.titleスタイルを定義しているときに(それらが複数回表示され、異なる親を持っていると仮定して)です。このjsfiddleは、私が何を意味するのかを理解するのに役立ちますhttp://jsfiddle.net/dewbot/LGAQD/

JS Rendererと同じように、CSSパーサーは最初に検出したときに反復を停止します#titleが、EOFに到達するまで反復を継続することはありませんclass。では、なぜこれを使用するのclassではなく、複数を使用する必要があるのか​​という疑問が生じidます。

4

4 に答える 4

4

では、なぜこれを使用するのclassではなく、複数を使用する必要があるのか​​という疑問が生じidます。

HTML仕様ではそう言われているため、ルールに違反するとコードが破損することがよくあります。

同じIDで複数の要素を識別することは意味がありますか?私はそうは思わない。それがクラスの目的です。類似した要素を分類するためです。

ここで最良の部分は、CSSが生成する出力が同じである場合、#titleまたは.titleスタイルを定義しているときに(それらが複数回表示され、異なる親を持っていると仮定して)です。

これは自然な動作であり、これを実行するブラウザ自体のバグではありません。それでも、通常は悪い、不適合なマークアップを処理するため、信頼できる動作ではありません。

JS Rendererと同じように、CSSパーサーは最初に検出したときに反復を停止します#titleが、EOFに到達するまで反復を継続することはありませんclass

今、これは間違っています。CSSパーサーは、要素ごとにセレクターマッチングを実行します。ルールを使用せず、DOMをウォークスルーして、一致する要素に適用します。代わりに、各要素を取得して、可能な限り多くのルールと照合しようとします。このように機能することで、パーサーはIDがドキュメント内の他の場所ですでに使用されているかどうかを認識せず、気にしません。それは、要素がそれが何であるかに従って単に一致します。この答えはそれをより詳細にカバーしています。

要素が特定のIDを持っている限り、その特定のIDを探しているIDセレクターと一致する必要があります。したがって、HTMLでは同じIDを持つ複数の要素を持つことは正しくありませんが、パーサーは、指定されたIDを持つすべての要素を単一のIDセレクターに一致させることが期待されます。つまり、CSSはHTMLに必要なIDの一意性を強制しません。この答えは説明します。

とはいえ、重要なのは、一度に1つの要素にのみIDを割り当て、クラスを使用して複数の類似した要素をグループ化することです。賢くなり、ルールを曲げようとしないでください。

于 2012-03-24T07:57:30.270 に答える
4

CSSの解析が間違っていると思います。ブラウザはCSSファイルの行を1行も調べず、HTMLファイルの要素にスタイルを適用します。その逆です。ブラウザはHTMLを解析し、classまたはid属性を見つけるたびに、CSSファイルで検索します。(これは非常に単純化されていますが、要点を理解するのに役立ちます)。

複数idのが存在する場合にブラウザが正しくレンダリングするからといって、それを実行する必要があるとは限りません。規格 は、が一意でなければならないと明確に述べています。id

于 2012-03-24T07:59:53.357 に答える
1

あなたは自分でそれに答えました。

CSS は、検出できるすべてのids およびclasses にそれを適用します。ただし、JS/jQuery は最初に見つけたものに実装します。

したがって、あなたの質問は次のようになります。

idJS 操作の多くの要素に同じ s を適用する必要がありますか? 答え:ばぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ....D決定

idCSS の多くの要素に同じを適用する必要がありますか? 回答:まだ悪い、決定!しかし、あなたのそのルールを実装します

また、階層的な方法で適用される CSS および JS ルールを使用するようにしてください。そうすれば、決して失敗することはありません。のように、#Heading div#Title{css rules here}または$('#Heading div#Titles')...jQuery rules here

次に、保守的な方法で ID を実装してみます。

次に、単一のページではなく、Web サイト/アプリの要素に一意の ID を提供してみてください。これにより、複数ページのユーティリティ スクリプトをページに含める必要がなくなります。

例: ホームページの上部の見出し:#Home-Top-Heading

それが役に立てば幸い。

于 2012-03-24T08:04:55.763 に答える
0

複数で同じ ID を使用すると、コードは検証に合格しません

CSS は複数の ID を気にせず、JavaScript は気にします

http://css-tricks.com/the-difference-between-id-and-class/

于 2012-03-24T08:05:12.783 に答える