たとえば、空のセレクターを使用して要素を作成し、<div class="">
別の要素を作成した場合<div>
空のクラスが原因で、その特定の要素を何らかの形でターゲットにすることはできますか?
ブラウザーのインスペクターを見ると、" div class
"と表示されています。
要素に関連付けられたクラスが作成されない場合、そこに存在することで問題が発生したり、完全に無視されたりする可能性はありますか?
実際、要素を選択する方法がありますclass=""
たとえば、これについて
<div class=""></div>
使用する
div[class=""]
実際のデモ: http://jsfiddle.net/JRP4n/
空または null 値を持つクラスは、クラス属性がまったく定義されていないこととは異なるようです。
空である定義済みのクラスを真にdiv[class=""]
ターゲットにしているため、機能します。
しかし、コメントで述べたように、空のクラス属性は仕様に準拠していませんが、興味深いことに、これまでのところすべての主要なブラウザーで機能しています。また、ブラウザがサポートを中止することを決定した場合、動作を停止する「可能性がある」ことも意味します。
この機能を利用できるかどうかを調べたところ、用途が見つかりました。
要素からすべてのクラス名を削除するために js を使用する場合、要素は「要素クラス」として残されるため、[class=""] {x;} を使用すると、以前にクラスを削除した要素を対象にすることができます。
一般に、以下はすべての属性に適用されます。
特に指定されていない限り、HTML 要素の属性は、空の文字列を含む任意の文字列値を持つことができます。
HTML5で空のclass
属性を持つことは有効です。
属性が指定されている場合、要素が属するさまざまなクラスを表す一連のスペースで区切られたトークンの値が必要です。
スペースで区切られたトークンのセットは、次のように定義されます。
スペースで区切られたトークンのセットは、 1 つ以上のスペース文字で区切られた0 個以上の単語 (トークンと呼ばれる) を含む文字列であり、単語は 1 つ以上の文字の任意の文字列で構成され、いずれも空白文字は含まれません。
class
したがって、トークンを含まない属性を持つことができます。
<div class="">This should be valid.</div>
value も省略できます。
空の属性構文
属性名だけ。値は暗黙的に空の文字列です。
したがってclass
、値のない属性を持つことができます (空の文字列を持つ値と同じです):
<div class>This should be valid.</div>
CSS では、次の方法でこれらの要素を選択できます。
[class] {color:red;} /* would select all elements with the class attribute, no matter which value */
[class=""] {color:red;} /* would select only elements with empty or no value */
[class|=""] {color:red;} /* would select elements that have an empty class value, no class value or a class value beginning with "-" */
私が読んだ限りでは、空のクラス名の動作は指定されていません。 w3 HTML5 仕様を参照してください。私の経験では、ブラウザーは空の属性を無視するだけです。