スタイルシートの検証は、The W3C CSS Validation Serviceで行なう事ができます。
これまでにも、
文書の構成/内容と見栄えは分離すべき
見栄えはスタイルシートが受け持つ
と、度々記述してきましたスタイルシートです。
ブラウザにより見栄えが違ってくるスタイルシートです。
全ての属性が反映されるとはかぎらないスタイルシートです・・・・何故?
いきなり悲観ですか?
HTML 文書の構成/内容 | スタイルシート 見栄 | |
+ | ||
ブラウザで解釈 | ||
↓ | ||
表示 |
ブラウザで解釈します。
解釈できない事は無視します。
ブラウザ毎に解釈が少し違います。
解釈に不具合があるブラウザもあります。
それが
スタイルシートです。
されど
ウェブ標準に欠かせないスタイルシートです。
スタイルシートは、W3Cが1996年にCSS1(Cascading Style Sheets, Level 1)を勧告し、1998年にCSS2(CSS, Level 2)を勧告し、2007年にCSS2.1(CSS, Level 2 Revision 1)に進化しています。
ご多分に漏れず、ブラウザ独自の定義もあります。下克上か?・・・・
スタイルシートを使用する場合は、HEAD要素内にメタ要素の記述が必要です。
<meta http-equiv="Content-Style-Type" content="text/css" >
スタイルシートでHTML文書を修飾する方法は、次の3種類が有ります。
<link rel="stylesheet" href="xxx.css" type="text/css" >
@charset "shift_jis";
W3C → XHTML 1.0 → Multi-part XHTML file → DTDs → XHTML-1.0-Strict より
<!-- style info, which may include CDATA sections --> <!ELEMENT style (#PCDATA)> <!ATTLIST style %i18n; id id #IMPLIED type %ContentType; #REQUIRED media %MediaDesc; #IMPLIED title %Text; #IMPLIED xml:space (preserve) #FIXED 'preserve' >
外部ファイル/STYLE要素に記述するスタイルシートは、 セレクタ (selector) と 宣言部 (declaration)で 更正 構成されます。
style属性の値に記述するスタイルシートは、 プロパティ と プロパティ値 のセットで構成されます。
セレクタ(洗濯 選択 )は、宣言部({ } 内)のスタイルで修飾させる対象要素を指定します。
/* ・・・・ */
間はスタイルシートのコメントです。*
{ ・・・・ }h1 { color : red ; }
/*
H1要素の内容の表示を赤色にする。*/
h2,h3,p { color : blue ; }/*
H2,H3,P要素の内容の表示を青色にする。*/
***
{ ・・・・ }:
に続く条件と一致した場合に修飾をします。a:link { ・・・・ }/*
リンク先が未訪問の場合のA要素の内容の修飾を指示する。*/
a:visited { ・・・・ }/*
リンク先が訪問済みの場合のA要素の内容の修飾を指示する。*/
今のところ、リンク先を記述できるのは A要素 のhref属性のみなので上記の記述のみですが、将来は他の要素でもリンク先を指定できるように検討されています。其の場合は、
要素名:link { ・・・・ }
と、記述して全てのリンク先記述箇所を指定するようになるのでしょう。
要素名:hover { ・・・・ }/*
ポインタが該当要素の上に移動してきた時。*/
要素名:focus { ・・・・ }/*
該当要素が選択された時。*/
要素名:active { ・・・・ }/*
該当要素を実行しようとした時。*/
***
{ ・・・・ }その他、The language pseudo-class 等が有りますが、動作確認が出来ませんでした。
各々の要素には、ブラウザで指定されているスタイルがあります。しかし、全ての要素に対して、色やサイズを全て指定しているわけではありません。スタイルシートはその指定を変えるものでもあります。
強調を意味するEM要素で考えてみます。表示させているブラウザの標準設定が、
だとします。次のHTML記述
の表示は
となるはずです。EM要素の内容の文字サイズや色は親要素と同じ表示がされています。文字スタイルのみ斜体文字です。この様に、親要素からスタイルを受け継ぐ事を、継承 ( inherit ) といいます。
継承よりもスタイルシートに記述されているスタイルが優先されます。
前例で、EM要素の表示を標準スタイルで赤色文字に指定したとします。その表示は、
となってしまい、視覚系のブラウザではH1要素の強調している箇所が判別できません。スタイルを指定する場合には、親要素からの継承や子要素に対する継承も考慮する必要があります。
しかし、そんなに難しく考える必要はありません。実際にウェブページを作成して表示させると、すぐに分かります。スタイルシートの修正は簡単ですし。
この節では、私の乏しい経験から判断した内容が殆どです。間違い等がありましたら御指導、宜しく御願いいたします。
前節で、継承よりもスタイルシートに記述されているスタイルが優先される と書きました。ブラウザはどの様にしてHTML文書とスタイルシートを解釈して表示するのでしょうか?。次のHTML記述
<p class="p1 p2">鳥啼く声す夢覚ませ</p>
で考えてみます。
鳥啼く声す夢覚ませ
と表示するでしょう。鳥啼く声す夢覚ませ
と表示するでしょう。鳥啼く声す夢覚ませ
と表示するのでしょうか?実際の表示は、上記通りですが・・・鳥啼く声す夢覚ませ
と表示されます。リンク擬似クラスと動的擬似クラスも、イベントが発生した時に、スタイルシート記述順に解釈されます。
a:link{ (1) }
a:visited{ (2) }
a:hover{ (3) }
と解釈して、a:hover が反映されますが、
a:hover{ (3) }
a:link{ (1) }
a:visited{ (2) }
と記述してある場合、ブラウザは、
と解釈して、a:hover が反映されません。ある要素(上記の場合はA要素)に対してリンク擬似クラスと動的擬似クラスを同時に指定する場合は、
の順に記述する必要があります。私、これで嵌ってしまいました!
スタイルシートの検証は、The W3C CSS Validation Service で行なう事ができますが、実際にブラウザで表示させると、思った通りの表示になっていない場合があります。又、ブラウザやそのバージョンにより見栄えが違う場合があります。
私が普段使用しているブラウザは、IE8ですので、それ以外のブラウザでの確認が必要になります。確認を行なっているブラウザは、
です。これらのブラウザは、早い段階からウェブ標準に対応していますので、古いバージョンでもまず大丈夫だと思っていますが、IE8以前のIEでは、かなり酷い解釈をするプロパティが存在します。
では、古いバージョンのIEの確認はどうしましょう?SuperPreview を使用して確認していまが、IE6以前のバージョンは確認が出来ません。