CSSはご存じでしょうか?CSS(Cascading Style Sheet)は、いまや当たり前に使われるようになりました。このCSSは、ビジュアル的な部分を定義するために存在します。
では、このカスケーディングと呼ばれる理由は何でしょうか。「階段状になった滝」という意味らしいです。これじゃピンとこないかもしれません。
記述方法が、連なっていてそれぞれが階層を意味しているといえばわかりやすいでしょうか。既にCSSを日々使われている方からするとごく当たり前のことかもしれません。
それでは、CSSセレクタはご存じでしょうか。意外と言葉自体を知らない方は多いようです。私もその1人でした。
ここでは、CSSセレクタをExt JSを使いながらみていきます。今回はW3C CSS3 SelectorsとExt JSのAPI Documentationをベースに解説します。
先に簡単にCSSセレクタについて確認しておきます。CSSセレクタとは、CSSでドキュメント内のDOMエレメント(HTMLエレメント:以下DOMエレメント)を特定する手段を指します。
つまり、デザイナの方が日々CSSで色をつけたり背景を指定したりしている記述そのものがCSSセレクタです。ドキュメントの中に存在するタグ(DOMエレメント/HTMLエレメント)を指定した条件で絞り込み、該当するタグに対してデザイン設定を行うというのが通常のCSSのデザイン作業になります。
Ext JSでは、このCSSセレクタを使ってDOMエレメントを取得し操作することが可能です。この方式を知っているのと知らないのでは、コーディング量が大幅に変動しますので、初期の段階でしっかり押さえておくことをおすすめします。
まず、セレクタの種類を確認し、それからExt JSでどのように扱うかについて触れたいと思います。CSSセレクタは、大きく分けて4つに分類することができます。
以下の確認コードは、基本的にFireFox 3.0で動作確認していますが、FireFox 3.0が対応していないものでSafariなどを利用する場合があります。Safariなど他のブラウザで確認しなければならないものについては、都度記載します。
「*」
俗に、ユニバーサルセレクタと呼ばれるものです。全てのDOMエレメントを指します。
また、次のように間にいることで、*部分のDOMエレメントは全てのDOMエレメントを指します。
div#foo * a {
font-weight: bold;
}
上記の例では、divのIDがfooの下にあるあらゆるDOMエレメントの下にあるAタグに対してCSSを適用しています。HTMLとしては、次のコード内の太字のAタグが適用されます。
<div id="foo">
<p>
<a href="http://www.xenophy.com">株式会社ゼノフィ</a>
</p>
<span>
<a href="http://www.xenophy.com">株式会社ゼノフィ</a>
</span>
<a href="http://www.google.com/">Google</a>
</div>
「E」
Eは、DOMエレメントの略です。こういう書き方をされるとちょっとわかりづらいと思いますが、たくさん出てくるので覚えていきましょう。
具体的には、次のような普段よく使われているようなコードになります。
h1 {
font-size:18px;
}
HTMLは次の通りです。
<h1>Ext JS 実践開発ガイド</h1>
DOMエレメントの種類を記述すると、該当のDOMエレメントに対して指定したCSSができるという例です。ここでは、h1タグ内の文字サイズを18pxに設定しました。
「E F」
先ほどの、E=Elementの略ですといいましたが、Fは単純にEの次なんで・・・。EとFの間には半角スペースが入っています。
これは、DOMエレメントのネスト構造を指定してCSSを設定することができるということです。
ul li a {
font-size:24px;
}
ULタグの下のLIタグのさらに下のAタグに対してCSSを適用します。
HTMLは次の通りです。
<ul>
<li>
<a href="http://www.extjs.com/">Ext JS</a>
</li>
</ul>
また、次のように記述することもできます。
ul a {
font-size:24px;
}
LIタグの仕手が消えました。しかしCSSは適用されます。これは、正確なネスト構造の順番を記述する必要はなく、指定したいDOMエレメントのネスト構造が定義できていれば、CSSセレクタは正常にDOMエレメントを特定します。