2012-12-14 24 views
12

この色のrgbルールをブラウザに適用できないのはなぜですか?"rgb(224,226,213)"が無効なプロパティ値であるのはなぜですか?

HTML

<header> 
    <h1>Header</h1> 
</header> 

CSS

header h1 { 
    background-color: red; 
    color: rgb (224, 226, 213); 
} 

Chromeウェブ開発者ツールは、それが無効なプロパティ値ですが、私は理由を理解することができないことを私に語っています。結果はJSFiddleです。

+0

rgbの後にスペースがあります – Esailija

+6

これは誤字のような質問ですが、将来の読者には役立たないとは思いません。これはかなり一般的な落とし穴です、私は私の答えに多くを含意します。 – BoltClock

答えて

28

あなたが許可されていませんrgb(間、持っている:いいえ、私は深刻だ

header h1 { 
    background-color: red; 
    color: rgb(224, 226, 213); 
} 

を、そうではありません。

多くのプログラミング言語とは異なり、CSSは明示的に関数名と開始括弧の間に空白を含むことを禁じています。これは、rgb()およびrgba()にだけでなく、url()およびattr()のような他の機能値、ならびに:nth-child(),:lang()および:not()のような機能的擬似クラスにも当てはまります。

述べた、section 4.3.6 of CSS2.1を参照してください。

の機能表記のRGB値のフォーマットは、3つの数値(いずれかの3つの整数値または三のカンマ区切りリストが続く「RGB(」でありますパーセント値)の後に ')'が続きます。 [...]数値の前後に空白文字を使用できます。

とも明確に空白が識別子と左括弧の間で期待されていないことを示して文法、正確には、次のトークン化のためのAppendix Gを参照してください:あなたはrgbの後にスペースを削除する必要がある

{ident}"("  {return FUNCTION;} 
+2

これは私には驚きでしたが、CSS 2.1の構文は実際には関数の表記法を実際に定義しており、 'rgb(...)'の散文の説明でさえ明白になっています(そして、この表記法では空白は使用できません)。 –

+2

このようなエラーを解決する最も簡単な方法は、それを検証することです。 [W3Cバリデータ](http://jigsaw.w3.org/css-validator/#validate_by_input)であなたのCSSを検証することができます。 –

+0

ジグソーバリデーターはあなたのためにエラーを見つけることができますが、あなたにそれらを修正する方法を示す際には信頼できません。例えば、スペースの存在が問題を引き起こしていることを実際には伝えません(なぜなら、スペースを最初に問題として見ない*ため)。そして、スペースを許す言語をプログラミングすることに慣れている人にとって、すぐには分かりません。質問者が質問を投稿する前に質問者が実際にJigsawを使ってCSSを実行した場合のボーナスポイント(私が信じているとは言っていないが、たとえ投稿してしまっても驚かないだろう)。 – BoltClock

1

rgb(224, 226, 213)

関連する問題