識別子で扱える文字
要素名、クラス名、及びセレクタのIDを含む識別子では扱える文字が決まっています。
- アルファベット(a~z、A~Z)および数字(0~9)の範囲にある文字
- Unicode(ISO 10646)の文字符号161以上の文字
- ハイフン(-)およびアンダースコア(_)も使用可能
- エスケープされた文字及び任意のISO 10646文字を数値符号として含むことが可能
- 必ずアルファベット(a~z、A~Z)から開始
ピリオドや&などの文字を使用する場合、例えば「date2009.3」なら「date2009\.03」、「B&W?」は「B\&W\?」または「B\26 W\3F」などとエスケープする必要がありますが、どうしても使わなければならない状況以外ではあまり使わない事をオススメします。
また、CSS3ではアンダースコアからの開始が可能となっているみたいですが、まだWorking Draftですし修正される可能性も考え、CSS2.1で使えない以上は後方互換を考え使用しないのがいいと思います。
アンダースコアに関しては、CSS2で使えないとなっていたため、一時期使うべきではないと言われていましたが、現状では問題なく使えるため特に気にせず使っていけます。
大文字と小文字の区別に関して
CSSでは、大文字・小文字の区別をしません。なので、例えばプロパティをbackgroundと書いてもBackGroundやBACKGROUNDと書いても問題ありません。
ですが、CSSではない部分においてはそれぞれの仕様に従う必要が有ります。
例えば、id属性やclass属性の値がそれに該当しますので、クラス名をmainAreaと付けて、(X)HTMLではmainareaとした場合、スタイルが適用されなくなってしまいます。














Comment [4]
> また、CSS3ではアンダースコアからの開始が可能となっているみたいですが、まだWorking Draftですし修正される可能性も考え、CSS2.1で使えない以上は後方互換を考え使用しないのがいいと思います。
いえ、
http://www.w3.org/TR/CSS2/syndata.html#vendor-keywords
に「In CSS, identifiers may begin with '-' (dash) or '_' (underscore).」と書いてありますから、CSS2.1で識別子はアンダースコアから始まれます。
No.1|by シマダさん|2010年5月 5日 05:54
> シマダさん
その項はブラウザベンダーの拡張に関しての記述では無いのでしょうか。
No.2|by hirasawaさん|2010年5月 5日 13:37
hirasawaさん
> その項はブラウザベンダーの拡張に関しての記述では無いのでしょうか。
確かにその通りですが、「In CSS, identifiers may begin with '-' (dash) or '_' (underscore).」は前置きであって、本題に入る前に「CSSの識別子はダッシュかアンダースコアで始まってもいいよ」と述べている文章だと思います。
http://www.w3.org/TR/CSS2/syndata.html#tokenization
の表を見ると、IDENTは{ident}であり、identは[-]?{nmstart}{nmchar}*であり、nmstartは[_a-z]|{nonascii}|{escape}であると定義されていますから、IDENTは「_」で始まれます。
(ただそのIDENTが、仕様書の
http://www.w3.org/TR/CSS2/syndata.html#value-def-identifier
で説明されている「identifier」に対応しているのかどうなのか、私では判断できませんでした。)
No.3|by シマダさん|2010年5月 6日 12:45
>シマダさん
えっと、
http://www.w3.org/TR/CSS2/syndata.html#characters
こっちに書かれてる、
hyphen (-) and the underscore (_); they cannot start with a digit, or a hyphen followed by a digit.
が、「識別子はハイフン及びアンダースコア又は数字から始めることはできない」と言った意味になっていないでしょうか?
ボクは英語全く読めないので、仕様書を全部追えてるわけではないですが・・・
ちょっと追記です:
気になったのでもう少しだけ読んでみても、
最初のご指摘の箇所は、CSSの識別子はダッシュかアンダースコアで始まってもいいよ、ではなく、ダッシュとアンダースコアはブラウザベンダーで予約されている識別子だよ。
と言って居て、その後のはCSS全体の構文を指しているので、ご指摘されている個所は CSS で扱える文字であって、識別子で扱える文字とは違っているんではないでしょうか。
いずれにしろ、試した限りでもIE6では アンダースコアから始まる識別子は認識していないようなので、「後方互換を考え使用しないのがいい」といった事に変わりないと思います。
No.4|by hirasawaさん|ウェブサイト|2010年5月30日 01:21
Post Your Comment
※コメントが認証されるまで、コメントは反映されません。ご了承くださいませ。