この CSS ルールを見てみましょう。
#foo { color: red; }
ご覧のとおり、上記のルールの宣言ブロックには 1 つの宣言、つまりcolor: red
. ただし、CSS 標準の私の解釈によれば、上記の宣言ブロックには 2 番目の空の宣言も含まれており、これは chars;
と}
.
#foo { color: red; }
^ --- an empty declaration is located here
私の解釈が正しいかどうか、つまり、上記の CSS ルールに 2 番目の空の宣言が実際に存在するかどうかを判断するために、Stack Overflow でこの質問をしています。
ところで、私は CSS 2.1 標準、具体的には「Chapter 4: Syntax」を使用しています。これは、「CSS Syntax」モジュールが古く、安全に使用できないためです。
わかりました、説明させてください。私の解釈は、次の定義に基づいています。
標準では、宣言ブロック内で、セミコロンは個々の宣言の間に表示されるセパレーターであると述べています。
宣言ブロックは、左中かっこ ({) で始まり、対応する右中かっこ (}) で終わります。間には、0 個以上のセミコロン (;) で区切られた宣言のリストが必要です。
したがって、上記の定義によれば、セミコロンは2 つの宣言の間にのみ出現します。つまり、セミコロンの前と後に宣言がなければなりません。
標準では、宣言を次のように定義しています。
宣言は、空であるか、プロパティ名、コロン (:)、プロパティ値で構成されます。
上記の定義は、宣言を空にすることができると述べています。残念ながら、標準は「空宣言」という用語を定義しておらず、標準の他のどこにも言及されていません。
例に戻りましょう:
#foo { color: red; }
上記のルールは有効な CSS です。(上記の) セミコロンの定義を適用することにより、この規則のセミコロンの前と後には宣言が必要です。ただし、セミコロンの後には閉じ中かっこ (宣言を終了します) が続きます。この矛盾を説明するために、 と の間に空の宣言を挿入し、;
次の}
定義を提供します。
空の宣言とは、宣言が必要であるが見つからない宣言ブロック内の位置に宣言がないことです。
この標準の解釈は正しいですか? また、宣言ブロックには実際に 2 つの宣言が含まれていますか?