0

ブラウザーは HTML を解釈し、解釈したとおりに結果を表示します。では、なぜ最初のクラス属性が 2 番目のクラス属性によって上書きされないのでしょうか。

<span class ='first' class= 'second' >text</span>

でももしそうなら

<span class ='first' class= 'second' style='color: green'>text</span>

以前のスタイルはすべて上書きされます。

これがフィドルです。

ありがとうございました。

4

3 に答える 3

6

同じ属性を 2 回持つことは無効な HTML であり、ブラウザはエラー リカバリを実行します。

具体的には、仕様から:

ユーザー エージェントが属性名の状態を離れるとき (および適切な場合はタグ トークンを発行する前)、完全な属性の名前を同じトークンの他の属性と比較する必要があります。トークンにまったく同じ名前の属性がすでに存在する場合、これは解析エラーであり、新しい属性は、それに関連付けられた値 (存在する場合) と共に削除する必要があります。

開始タグには既に class 属性があるため、2 番目の class 属性は無視されます。

(属性はスペースで区切られたリストを取るため、要素に複数のクラスを指定できることに注意してください: class="first second")

スタイル属性はクラス属性を上書きしません。要素には、関連付けられた両方の属性があります。ただし、スタイル シートが適用されると、スタイル属性ルールはクラス セレクターを含むルールよりも特異性が高くなるため、スタイル属性で指定されたプロパティがカスケードを獲得します。

于 2013-07-24T11:51:41.847 に答える
3

まず、構文が無効ですclass。タグ内に 1 つの属性しか持てません。

そして、乗り越しに関する限りinline styles、CSS で最も優先度が高くなります。

複数のクラスを使用する正しい方法は次のとおりです

<span class ='first second'>text</span>

デモ

于 2013-07-24T11:51:07.453 に答える
1
  1. classhtml 要素は 1 つ(または他のタイプのプロパティの 1 つ)しか持つことができないため、2 番目の要素はブラウザーによって常に拒否されます (要素に 2 つあるように見えても、実際には 1 つしかありません)。

  2. ルールはstyle、要素のプロパティがスタイルの前に常に優先されるということです。class

于 2013-07-24T11:50:36.687 に答える