目次
この節は非規範的である。
このチュートリアルでは、単純なスタイルシートの設計がいかに容易であるかを示す。このチュートリアルに関しては、わずかなHTML [HTML4]と基本的なDTP用語についての知識が必要である。
小さなHTML文書から始める:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
H1要素のテキストの色を赤に設定するために、次のCSS規則を記述するとよい:
h1 { color: red }
CSS規則は、セレクター('h1')および宣言('color:red')という2つの主要部分から構成される。HTMLにおいて、要素名は大文字と小文字を区別しないため、'h1'は'H1'とまったく同じ働きをする。宣言は、プロパティ名('color')とプロパティ値('red')という2つの要素を持つ。上の例は、HTML文書のレンダリングに必要なプロパティの1つのみに影響を及ぼすよう試みたにすぎないとはいえ、それだけでスタイルシートであると言える。他のスタイルシートと組み合わせることで(CSSの基本的な機能の1つは、スタイルシートを組み合わせることにある)、最終的な外観が決定される。
HTML 4仕様は、スタイルシート規則をHTML文書内に、または外部スタイルシートを経由して指定する方法を定義する。スタイルシートを文書に埋め込むためには、STYLE要素を使用するとよい:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <STYLE type="text/css"> h1 { color: red } </STYLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
柔軟性を最大限に高めるために、著者は外部スタイルシートを指定することを推奨する。外部スタイルシートは、ソースHTML文書を修正することなくスタイルシートを変更でき、また複数の文書間でスタイルシートを共有できる。外部スタイルシートにリンクするためには、LINK要素を使用するとよい:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <LINK rel="stylesheet" href="bach.css" type="text/css"> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
LINK要素は以下の事項を指定する:
スタイルシートと構造化マークアップとの間の密接な関係を示すために、このチュートリアルでSTYLE要素を使用しつづける。より多くの色を追加してみよう:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <STYLE type="text/css"> body { color: black; background: white } h1 { color: red; background: white } </STYLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
今、スタイルシートは4つの規則を含んでいる:最初の2つはBODY要素の色と背景を設定する(テキストの色と背景色を同時に設定することはよいアイデアといえる)と同時に、最後の2つはH1要素の色と背景を設定している。P要素には色が設定されていないので、親要素、つまりBODY要素から色を継承することになる。H1要素もまたBODY要素の子要素であるが、2番目の規則が継承値を上書きする。CSSでは、異なる値の間でこのような衝突がたびたびあるが、この仕様はそれらを解決する方法を説明する。
CSS 2.2は、'color'を含む90以上のプロパティを持つ。その他のプロパティも見てみよう:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <TITLE>Bach's home page</TITLE> <STYLE type="text/css"> body { font-family: "Gill Sans", sans-serif; font-size: 12pt; margin: 3em; } </STYLE> </HEAD> <BODY> <H1>Bach's home page</H1> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
最初に気づくことは、複数の宣言が波括弧で囲まれたブロック内でグループ化され({...})、セミコロンで区切られていることだろう。もっとも、セミコロンが最後の宣言の後にもあってもよい。
BODY要素の最初の宣言は、"Gill Sans"フォントファミリーを設定している。このフォントが利用できない場合、ユーザーエージェント(たいてい"ブラウザー"と呼ばれる)は、'sans-serif'フォントファミリーを使用するだろう。これは5つある総称フォントファミリーのうちの1つで、すべてのユーザーエージェントが認識するものである。BODY要素の子要素は、'font-family'プロパティの値を継承する。
2番目の宣言は、BODY要素のフォントサイズを12ポイントに設定している。"ポイント"という単位は、一般にフォントサイズやその他の長さの値を示すために、印刷に基づく組版において用いられる。これは、環境に呼応して増減しない絶対単位の例である。
3番目の宣言は、その環境に関しては増減する相対単位を用いている。"em"という単位は要素のフォントサイズを参照する。この場合、BODY要素の周囲のマージンはフォントサイズの3倍幅のある数値となる。
この節は非規範的である。
CSSは、たとえば拡張可能なマークアップ言語[XML11]のアプリケーションのような、どのような構造化文書形式でも利用できる。実際に、著者はユーザーエージェントが表示する方法を知らないXML要素をマークアップすることができるので、XMLはHTML以上にスタイルシートに依存する。
簡単なXMLの断片を以下に示す:
<ARTICLE> <HEADLINE>Fredrick the Great meets Bach</HEADLINE> <AUTHOR>Johann Nikolaus Forkel</AUTHOR> <PARA> One evening, just as he was getting his <INSTRUMENT>flute</INSTRUMENT> ready and his musicians were assembled, an officer brought him a list of the strangers who had arrived. </PARA> </ARTICLE>
この断片を文書に適した方式で表示させるために、要素がインラインレベル(すなわち改行をさせない)であるか、ブロックレベル(すなわち改行をさせる)であるかを最初に宣言しなければならない。
INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
最初の規則でINSTRUMENTがインラインであると宣言し、コンマ区切りのセレクターの羅列である2番目の規則は、他のすべての要素がブロックレベルであると宣言している。XMLにおいて要素名は大文字・小文字を区別する。そのため、小文字で書かれたセレクター(たとえば、'instrument')と大文字で書かれたセレクター(たとえば、'INSTRUMENT')は異なるものとなる。
XML文書にスタイルシートをリンクさせる1つの方法は、処理命令を使用することである:
<ARTICLE> <HEADLINE>Fredrick the Great meets Bach</HEADLINE> <AUTHOR>Johann Nikolaus Forkel</AUTHOR> <PARA> One evening, just as he was getting his <INSTRUMENT>flute</INSTRUMENT> ready and his musicians were assembled, an officer brought him a list of the strangers who had arrived. </PARA> </ARTICLE>
視覚ユーザーエージェントは上記の例を次のように書式を設定する:
単語"flute"がインライン要素INSTRUMENTのコンテンツであるため、段落内にとどまっていることに注目する。
依然として、テキストは意図したとおりに整形されてない。たとえば、見出しは残りのテキストよりも大きなフォントサイズにすべきであるし、著者の名前をイタリック体で表示させてもよい:
INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block } HEADLINE { font-size: 1.3em } AUTHOR { font-style: italic } ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
視覚ユーザーエージェントは上記の例を次のように書式を設定する:
スタイルシートにより多くの規則を追加することで、文書の表現をより向上させることができるだろう。
この節は小節も含めて非規範的である。
この節は、ユーザーエージェントがCSSをサポートする動作方法として可能な1つのモデルを提示する。これは抽象的なモデルにすぎない。実際の実装は異なってもよい。
このモデルにおいて、ユーザーエージェントは以下の操作によってソースを処理する:
値の計算の一部は、ターゲットメディアタイプに適切な整形アルゴリズムに依存する。たとえば、ターゲットメディアが画面であれば、ユーザーエージェントは視覚整形モデルを適用する。
CSSユーザーエージェントはこの段階で文書ツリーを改変しないことに注意されたい。とくに、スタイルシートに起因する内容生成は、文書言語プロセッサーにフィードバックされることはない(たとえば、再解析のために)。
すべてのメディアに対して、用語キャンバスは"整形構造がレンダリングされる空間"を表す。キャンバスは各次元について無限空間であるが、一般的にレンダリングは、ターゲットメディアによって設置されたキャンバスの有限範囲で行われる。たとえば、画面表示をするユーザーエージェントは、一般的に最小幅を設け、ビューポートの次元に基づく初期幅を選択する。ページ出力をするユーザーエージェントは一般的に幅と高さに制限を設ける。聴覚ユーザーエージェントは音声空間に関する制限をしてもよいが、時間の制限をしない。
CSS 2.2セレクターおよびプロパティは、文書またはユーザーエージェントの以下の部分の参照をスタイルシートに割り当てる:
この節は非規範的である。
以前のCSS2およびCSS1と同様に、CSS 2.2は一連の設計原則に基づいている:
前方および後方互換性。CSS 2.2のユーザーエージェントはスタイルシートを解釈することができる。CSS1ユーザーエージェントはCSS 2.2スタイルシートを読むことができ、解釈できない部分は破棄する。また、CSSをサポートしないユーザーエージェントでも、スタイルの拡張された文書を表示できるだろう。もちろん、CSSによって可能となったスタイルの機能強化はレンダリングされないが、すべての内容は表示される。
構造化文書の補完。スタイルシートは、マークアップテキストにスタイル情報を与えることで、構造化文書(たとえば、HTMLやXMLアプリケーション)を補完する。マークアップに影響を与えることなくスタイルシートを容易に変更できるはずである。
ベンダー、プラットフォーム、デバイスからの独立。スタイルシートは、ベンダー、プラットフォーム、デバイスからの独立を保つ文書を可能にする。スタイルシート自身もまたベンダーやプラットフォームから独立しているが、CSS 2.2はある種のデバイス(たとえば、プリンター)を対象にしたスタイルシートを認めている。
保全性。文書からスタイルシートを指定することによって、ウェブマスターがサイトのメンテナンスを簡素化し、サイトのいたるところで一貫した外観を保持する。たとえば、背景色を変更する場合、ただ1つのファイルを変更するだけでよい。
容易性。CSSは、人間が読み書き可能である簡潔なスタイル言語である。CSSプロパティは可能な限り最大の範囲で相互に独立するよう保持され、通常、ある効果を達成する唯一の方法が存在する。
ネットワークの性能。CSSは、コンテンツを表示するための簡素なエンコーディングを提供する。レンダリング効果を得るためによく用いられる画像や音声ファイルと比べて、スタイルシートはコンテンツ量を最も減少させる。また、より少ないネットワーク接続は、さらなるネットワークパフォーマンスの増加をもたらす。
柔軟性。CSSはさまざまな方法でコンテンツに適用できる。キーポイントとなる特徴は、(ユーザーエージェントの)デフォルトスタイルシート、ユーザースタイルシート、リンクされたスタイルシート、文書のヘッダー、文書の本体にある要素の属性、といった方法で指定されたスタイル情報をカスケードする機能である。
豊かさ。レンダリング効果の豊富な設定を著者に提供することで、表現メディアとしてのウェブの豊かさが向上する。デザイナーは、DTPやスライドショー・アプリケーションに共通して見られるような機能性を待ち望んでいる。要求された一部のレンダリング効果はデバイスの独立性と矛盾するが、CSS 2.2はデザイナーの要求を容認するのに大きな役割を果たす。
他言語との結びつき。本仕様に記述された一連のCSSプロパティは、視覚および聴覚表現のための一貫性のある整形モデルを構成する。この整形モデルはCSS言語を通してアクセスされるが、他の言語に結びつけることも可能である。たとえば、JavaScriptプログラムは、ある要素の'color'プロパティの値を動的に変化させることができる。
アクセシビリティー。複数のCSSの機能は、障害を持つユーザーをウェブによりアクセスしやすくする。
注。 CSSおよびHTMLを用いたアクセシブルな文書の設計についてのより詳しい情報は、[WCAG20]を参照のこと。