CSSの基礎を新人に会社で教えることになった。そこで、ちょっと勉強したのでその記録に。
CSSの基礎を新人に会社で教えることになった。そこで、ちょっと勉強したのでその記録に。
スタイルシート (Style Sheet) とは、ドキュメント文書において表示形式を制御する概念である。
HTML3.02において、データ構造だけでなく幅や色などデザインに関する要素や属性が追加された。
HTML4.01にて、「データ構造とデザインに関する部分は分けたほうがいいんじゃね?」とかいうSGMLの原点に戻ろうと言うことで
HTMLでデータ構造を記述し、スタイルシートを用いてデザインを制御すると言う方式をとることになった。
スタイルシートの1つにCSS (Cascading Style Sheets) があり、HTML、XHTML、SVG、XUL、その他のマークアップ言語で書かれた文書のスタイルを指定するのに使われている。
CSSはW3Cによる勧告の一つである。HTML で表現可能と考えられるデザインの大部分を実現できる要素を取り入れつつ、新たなデザイン機能を備えている。
「Cascading=重ね合わせる」。要は複数のスタイルシートを用いてデザインを行うことができる。この場合、優先順位の考慮が必要となるがそれは別途記述する。
HTMLでのデザインは1つ1つの要素に幅や長さを指定する必要がある。
例えば、奇数行、偶数行で色を変更する場合、HTMLで記述する場合は奇数行、偶数行全ての要素に幅や長さを指定する必要がある。
しかし、CSSを用いることで要素セレクタ、クラスセレクタを用いることで複数の要素のデザインを設定することができる。
CSSを用いれば奇数行のデザイン、偶数行のデザインを用意するだけですむ。
この奇数行と偶数行の色が変更になった場合の手間を考えた場合、スタイルシートを利用した方が短時間の修正時間となる。
また、CSSを外部ファイルにし複数のファイルで読み込むことで共通のデザインを適用することができる。
スタイルシートの特徴から以下のメリットがある。
ブラウザの挙動が異なること。(スタイルシートの問題ではない。)
スタイルシート側でデザインを制御しようとしても閲覧者が使用するブラウザによって解釈が異なるため作成者側の意図したデザインで表示できない場合がある。
このあたりは、CSSハックを用いて対応することとなる。例えば、特定のブラウザでしか解釈できない方法で記述することで特定のブラウザの挙動のみを制御するといった方法である。
CSSの記述の一例を下記に示す。
p#id { color : #ff3300 }
"{" から "}" までの部分を宣言ブロックというHTMLに適用するためには、下記の4つの方法がある。
<link rel="stylesheet" href="default.css" type="text/css" />適用範囲はCSSファイルを読み込んだHTMLファイル
<style type="text/css"> <!-- @import url(default.css); --> </style>適用範囲はCSSファイルを読み込んだHTMLファイル
<style type="text/css"> <!-- h1 { color: #FF0000 } --> </style>適用範囲は記述したHTMLファイルのみ
< div style="color: #FF0000; background-color:#0000FF;width:100px">サンプル</div>適用範囲は記述した要素のみ
ユーザが指定したCSSを適用して読み込むことができる。(ユーザスタイル)しかし、通常の指定では、ユーザスタイルは作成者スタイルシートより優先度が低いため適用されない。 しかし、!importantを宣言することにより、ユーザスタイルを崔周旋することができる。