1 CSS 2.1仕様について

目次

注: この仕様の複数の節は、他の仕様によって更新されている。置換された仕様および節のリストの詳細は、最新のCSS Snapshotにおける"Cascading Style Sheets (CSS) — 公式の定義"を参照されたい。

CSS Working Groupはまた、CSS level 2 revision 2 (CSS 2.2).を開発している。

1.1 CSS 2.1 vs CSS 2

CSSコミュニティはCSS2が1998年に勧告となって以来、CSS2仕様とともに意味のある経験を得ている。CSS2仕様における誤りは、その後さまざまなエラッタの発行によって修正されたが、経験に基づいて仕様を変更する機会がこれまでになかった。

これらの問題の多くは今後のCSS3仕様によって対処される一方で、現在の状況は、CSS2の実装と相互運用性を妨げている。CSS 2.1仕様は、この状況への対処を以下によって試みている:

このように、CSS2スタイルシートが必ずしもCSS 2.1と前方互換性があるとは限らないことが事実である一方、今日の適合したユーザーエージェントを満足させつつ、将来にわたって前方互換性を維持する可能性が高くなることも事実である。前方互換性を破棄することが好ましいことではないものの、我々はCSS 2.1における改訂の長所が価値あるものと信じる。

CSS 2.1はCSS2から派生しており、CSS2の置換を意図する。CSS2の一部は、CSS 2.1においても不変である。一部は変更されており、そして削除されている。削除された部分は、将来のCSS3仕様で使用されるかもしれない。将来の仕様はCSS 2.1を参照すべきである(ただし、CSS 2.1で削除されたCSS2の機能を必要とし、その上でそれらの機能のためにCSS2を参照する必要がある場合、つまり、削除された機能を含むCSS3モジュールの機能を参照する場合を除く)。

1.2 仕様を読むにあたって

この節は非規範的である。

この仕様は2種類の読者を念頭においている。CSS著者とCSS実装者である。我々は、この仕様が著者に対してCSSの実装の詳細が過度に提示することなく、効率的で魅力的、そしてアクセシブルなCSS文書を書くために必要な手段を提供することを望んでいる。しかし、実装者は適合ユーザーエージェントを作成するために必要なすべてを見出だすべきである。この仕様は、CSSの一般的な説明から始まり、読みすすめるにしたがって技術的かつ具体的な内容へと進んでいく。情報へのすばやいアクセスのために、電子版と印刷版の両方に、総目次、各章の冒頭での目次、そして索引による簡単なナビゲーションを提供している。

この仕様は、電子版と印刷版という2つの表現方法を念頭において執筆されている。電子版と印刷版が同類であることは疑いないだろうが、読者は多少の相違点を見つけるだろう。たとえば、印刷版においてリンクは(いうまでもなく)動作せず、電子版においてページ番号は表示されない。食い違いがある場合、電子版を文書の正式なバージョンとみなす。

1.3 仕様の構成

この節は非規範的である。

この仕様は以下の章で構成される:

2章:CSS 2.1の手引き
この手引きは、CSS 2.1の簡潔なチュートリアルと、CSS 2.1の背後にある設計原則の考察を収録している。
3-18章:CSS 2.1 リファレンスマニュアル
リファレンスマニュアルの大部分は、CSS 2.1言語リファレンスで構成されている。このリファレンスでは、CSS 2.1スタイルシート(構文、プロパティ、プロパティ値)に何を入れてもよいのか、そしてユーザーエージェントが適合要求するためにスタイルシートをどのように解釈しなければならないかを定義する。
付録:
付録は、聴覚スタイルシート(非規範的)、HTML 4のためのスタイルシート例CSS2からの変更点CSS2.1の文法、標準と情報を提供する参考文献の一覧、プロパティ表総索引の2つの索引に関する情報を含む。

1.4 表記法

1.4.1 文書言語の要素と属性

1.4.2 CSSプロパティの定義

各CSSプロパティの定義は、下記の主要情報の要約で始まる:

'プロパティ名'
値:  正当な値とその構文
初期値:  初期値
適用対象:  そのプロパティが適用される要素
継承:  プロパティが継承されるかどうか
パーセンテージ:  どのようにパーセント値を解釈するか
メディア:  プロパティが適用されるメディアグループ
算出値:  算出値を計算する方法

1.4.2.1

この部分は、名前が'プロパティ名'のプロパティに対して妥当な値の集合を規定する。プロパティ値は、1つ以上のコンポーネントを持つことができる。コンポーネント値の型は、複数の方法で指定される:

  1. キーワード値(たとえば、auto、discなど)。
  2. "<"と">"の間に出現する基本データ型(たとえば、<length>、<percentage>など)。電子版において、基本データ型の各例は、各基本データ型の定義にリンクしている。
  3. 同じ名前(たとえば<'border-width'>、<'background-attachment'>など)を持つプロパティと同じ値の範囲を持っている型。この場合、型名は"<"と">"の間に(引用符付きの完全な)プロパティ名となる(たとえば、<'border-width'>)。このような型は、値'inherit'を含まない。電子版では、非終端なこの型の例は対応するプロパティの定義にリンクしてある。
  4. 非終端はプロパティと同じ名前を共有しない。この場合、非端末名は<border-width>のように、"<"と">"の間に出現する。<border-width>と<'border-width'>の間の差異に注意する。後者は前者の用語で定義されている。非終端の定義は、仕様中に非終端が最初に出現した近くに位置する。電子版では、この型の例は対応する値の定義にリンクしてある。

これらの定義においてその他の単語は、引用符なしで(たとえばred)、リテラルに出現しなければならないキーワードである。スラッシュ(/)やコンマ(,)などもリテラルに出現しなければならない。

コンポーネントの値は、次のようにプロパティ値に配置してもよい:

並置は二重アンパサンドよりも強く、二重アンパサンドは二重縦線よりも強く、二重縦線は縦線よりも強い。したがって次の2行は等価である:

    a b   |   c ||   d &&   e f
  [ a b ] | [ c || [ d && [ e f ]]]

すべての型、キーワード、角括弧グループは、次の量指定子を付けてもよい:

次の例はさまざまな値の型を示す:

Value: N | NW | NE
Value: [ <length> | thick | thin ]{1,4}
Value: [<family-name> , ]* <family-name>
Value: <uri>? <color> [ / <color> ]?
Value: <uri> || <color>
Value: inset? && [ <length>{2,4} && <color>? ]

付録G.2節で説明するように、コンポーネント値はトークン単位で指定される。expr(訳注:Unix系OSのコマンド)製作物のコンポーネントにおいてトークン間の空白を許可するように、空白はプロパティ値のトークン間に出現してもよい。

注:多くの場合、空白は実際にはトークン同士を区別するために、トークン間に必要とされるだろう。たとえば、値'1em2em'は、数字'1'と無効な単位識別子'em2em'とともに、単一のDIMENトークンとして構文解析されるだろう。この場合、2つの長さ'1em'と'2em'として構文解析されるよう空白は'2'の前に必要になるだろう。

1.4.2.2 初期値

この部分は、プロパティの初期値を規定する。スタイルシートの指定値、継承値、初期値の相互関係についての情報はカスケードの節を参照のこと。

1.4.2.3 適用対象

この部分は、プロパティが適用される要素を示す。すべての要素は、全プロパティを所有しているとみなされるが、一部のプロパティはある要素のタイプでレンダリングの効果はない。たとえば、'clear'プロパティはブロックレベル要素にのみ作用する。

1.4.2.4 継承性

この部分は、プロパティ値が先祖要素から継承されるかどうかを示す。スタイルシートの指定値、継承値、初期値の相互関係についての情報はカスケードの節を参照のこと。

1.4.2.5 パーセント値

この部分は、プロパティにパーセント値が現れた場合、どのように解釈すべきかを示す。ここに"利用不可"が登場する場合、プロパティはパーセント値を受け入れないことを意味する。

1.4.2.6 メディアグループ

この部分は、プロパティが適用されるメディアグループを示す。メディアグループに関する情報は非規範的である。

1.4.2.7 算出値

この部分は、プロパティの算出値を説明する。この定義がどのように使用されるかについては算出値の節を参照のこと。

1.4.3 略式プロパティ

プロパティの一部には略式プロパティが存在する。これは、著者が複数のプロパティ値を1つのプロパティで指定できることを意味する。

たとえば、'font'プロパティは'font-style''font-variant''font-weight''font-size''line-height''font-family'を一度にそろって設定できる略式プロパティである。

値が略式プロパティから省略された場合、各"欠落した"プロパティは初期値が割り当てられる(カスケードの節を参照)。

例:

この例の複数のスタイル規則は:

h1 { 
  font-weight: bold; 
  font-size: 12pt;
  line-height: 14pt; 
  font-family: Helvetica; 
  font-variant: normal;
  font-style: normal;
}

1つの略式プロパティで書いてもよい:

h1 { font: bold 12pt/14pt Helvetica }

この例において、'font-variant''font-style'は初期値を取る。

1.4.4 注釈と例

不正な使用法を説明する例はすべて、明確に"不正な例"とマークされている。

DOCTYPE宣言のないHTMLはHTML 4.01 Strict DTDに適合するSGML文書の断片である[HTML4]。他のHTMLの例は、例で指定されたDTDに適合している。

すべての注は参考情報にすぎない。

例と注は仕様とCSSユーザーエージェントのためにHTMLソースでマークされており、これらを特別な形で表示するだろう。

1.4.5 画像と説明文

仕様の電子版においてほとんどの画像は、画像が何を表しているかの"長い説明"を添付している。長い説明へのリンクは画像のあとに"[説明]"を用いて示す。

画像および長い説明は参考情報にすぎない。

1.5 謝辞

この節は非規範的である。

CSS 2.1 is based on CSS2. See the acknowledgments section of CSS2 for the people that contributed to CSS2.

We would like to thank the following people who, through their input and feedback on the www-style mailing list, have helped us with the creation of this specification: Andrew Clover, Bernd Mielke, C. Bottelier, Christian Roth, Christoph Päper, Claus Färber, Coises, Craig Saila, Darren Ferguson, Dylan Schiemann, Etan Wexler, George Lund, James Craig, Jan Eirik Olufsen, Jan Roland Eriksson, Joris Huizer, Joshua Prowse, Kai Lahmann, Kevin Smith, Lachlan Cannon, Lars Knoll, Lauri Raittila, Mark Gallagher, Michael Day, Peter Sheerin, Rijk van Geijtenbeek, Robin Berjon, Scott Montgomery, Shelby Moore, Stuart Ballard, Tom Gilder, Vadim Plessky, Peter Moulder, Anton Prowse, Gérard Talbot, Ingo Chao, Bruno Fassino, Justin Rogers, Boris Zbarsky, Garrett Smith, Zack Weinberg, Bjoern Hoehrmann, and the Open eBook Publication Structure Working Group Editors. We would also like to thank Gary Schnabl, Glenn Adams and Susan Lesch who helped proofread earlier versions of this document.

In addition, we would like to extend special thanks to Elika J. Etemad, Ada Chan and Boris Zbarsky who have contributed significant time to CSS 2.1, and to Kimberly Blessing for help with the editing.

Many thanks also to the following people for their help with the test suite: Robert Stam, Aharon Lanin, Alan Gresley, Alan Harder, Alexander Dawson, Arron Eicholz, Bernd Mielke, Bert Bos, Boris Zbarsky, Bruno Fassino, Daniel Schattenkirchner, David Hammond, David Hyatt, Eira Monstad, Elika J. Etemad, Gérard Talbot, Gabriele Romanato, Germain Garand, Hilbrand Edskes, Ian Hickson, James Hopkins, Justin Boss, L. David Baron, Lachlan Hunt, Magne Andersson, Marc Pacheco, Mark McKenzie-Bell, Matt Bradley, Melinda Grant, Michael Turnwall, Ray Kiddy, Richard Ishida, Robert O'Callahan, Simon Montagu, Tom Clancy, Vasil Dinkov, … and all the contributors to the CSS1 test suite.

Working Group members active during the development of this specification: César Acebal (Universidad de Oviedo), Tab Atkins Jr. (Google, Inc.), L. David Baron (Mozilla Foundation), Bert Bos (W3C/ERCIM), Tantek Çelik (W3C Invited Experts), Cathy Chan (Nokia), Giorgi Chavchanidze (Opera Software), John Daggett (Mozilla Foundation), Beth Dakin (Apple, Inc.), Arron Eicholz (Microsoft Corp.), Elika J. Etemad (W3C Invited Experts), Simon Fraser (Apple, Inc.), Sylvain Galineau (Microsoft Corp.), Daniel Glazman (Disruptive Innovations), Molly Holzschlag (Opera Software), David Hyatt (Apple, Inc.), Richard Ishida (W3C/ERCIM), John Jansen (Microsoft Corp.), Brad Kemper (W3C Invited Experts), Håkon Wium Lie (Opera Software), Chris Lilley (W3C/ERCIM), Peter Linss (HP), Markus Mielke (Microsoft Corp.), Alex Mogilevsky (Microsoft Corp.), David Singer (Apple Inc.), Anne van Kesteren (Opera Software), Steve Zilles (Adobe Systems Inc.), Ian Hickson (Google, Inc.), Melinda Grant (HP), Øyvind Stenhaug (Opera Software), and Paul Nelson (Microsoft Corp.).