(Translated by https://www.hiragana.jp/)
Cascading Style Sheets - Wikipedia コンテンツにスキップ

Cascading Style Sheets

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
Cascading Style Sheets
拡張子かくちょうし.css
MIMEタイプtext/css
開発かいはつしゃWorld Wide Web Consortium
種別しゅべつスタイルシート
国際こくさい標準ひょうじゅんCSS Level 1 (Recommendation),

CSS Level 2 (Recommendation),
CSS Level 2 Revision 1 (Recommendation),
Selectors Level 3 (Recommendation),
CSS Color Module Level 3 (Recommendation),

CSS Namespaces Module Level 3 (Recommendation),

Cascading Style Sheets(カスケーディング・スタイル・シーツ)は、HTMLXML要素ようそをどのように修飾しゅうしょく表示ひょうじ)するかを指示しじするスタイルシート言語げんごである。World Wide Web Consortium (W3C) がとりまとめ勧告かんこくする、文書ぶんしょ構造こうぞう体裁ていさい分離ぶんりさせるという理念りねん実現じつげんするために提唱ていしょうされた。略称りゃくしょうは、CSS

CSSはHTMLで表現ひょうげん可能かのうかんがえられるデザインだい部分ぶぶん実現じつげんできる要素ようそれつつ、あらたなデザイン機能きのうそなえる。以下いかてん特徴とくちょうとする。

  • ページを表示ひょうじするメディアにわせてスタイルシートをえることで、メディアごとに表示ひょうじ変化へんかさせることができる。
  • ユーザーエージェントおおくの場合ばあいウェブブラウザ)、ウェブサイト制作せいさくしゃ、ユーザがそれぞれ定義ていぎしたCSSのもたらす効果こうかかさわせる(カスケードする)ことができる[注釈ちゅうしゃく 1]

CSSは、1994ねんホーコン・ウィウム・リーによって開発かいはつされた。

記述きじゅつ

[編集へんしゅう]

スタイルの情報じょうほう内容ないよう作成さくせいしゃスタイルシート)やユーザーエージェントの設定せってい(ユーザースタイルシート)の2かしょ記載きさいできる。ユーザーエージェントも独自どくじのスタイル(デフォルトスタイルシート)をっている。

作成さくせいしゃスタイルシートはマークアップ文書ぶんしょなか直接ちょくせつ記述きじゅつするか、べつ文書ぶんしょとしてませるかたち利用りようされる。CSS の利便りべんせい最大限さいだいげん発揮はっきするために、べつ文書ぶんしょとしてませること推奨すいしょうされている。

記述きじゅつ方法ほうほう

[編集へんしゅう]

ここでは CSS Level 2 について説明せつめいする。CSS の文法ぶんぽうことなるレベルあいだでも後方こうほう互換ごかんせいつように設計せっけいされており、たとえば CSS Level 1 でかれたスタイルシートを CSS Level 2 としてあつかうことも可能かのうである(ただし一部いちぶ解釈かいしゃく相違そういなどにともな互換ごかん部分ぶぶん存在そんざいする)。CSS では要素ようそにスタイルをあたえるため、つぎのような仕様しようさだめられている。

以下いかのCSS断片だんぺんれいにとる。

p#id { color: #ff3300 }
  • { から } までの部分ぶぶん宣言せんげんブロックという
  • p#idセレクタ選択せんたく)といい、スタイルが適用てきようされる対象たいしょうをしめす
  • 宣言せんげんブロックとセレクタをわせて規則きそく集合しゅうごうという
  • color: #ff3300 部分ぶぶん宣言せんげんという
  • 宣言せんげんうち: よりまえうえれいでは color )をプロパティ特性とくせい)という
  • 宣言せんげんうち: よりうえれいでは #ff3300 )をという

うえれいの CSS 断片だんぺん適用てきようすると宣言せんげんしている文書ぶんしょのうち、セレクタが指定していしているものと一致いっちする部位ぶい(HTML 文書ぶんしょにおいては要素ようそ要素ようそ親子おやこ関係かんけい特定とくていのクラス、ID など)に、宣言せんげんブロックない宣言せんげん適用てきようされる。宣言せんげんは、「プロパティ: 」か、「そらなに記述きじゅつしない)」のどちらかで構成こうせいされ、プロパティ、:前後ぜんごには空白くうはく文字もじ(スペース、タブ、改行かいぎょうなど)を自由じゆうれられ、また ;区切くぎることにより宣言せんげんべてくことができる。

うえれいは HTML 文書ぶんしょ適用てきようする場合ばあい、「 id という ID をった p 要素ようそ文字もじしょくあか FF(=255)みどり 33(=51)あお 0 にせよ」という指定してい意味いみする。

color: #ff3300;
width: 35%
color: "#0033ff";
width: '53%'

このような宣言せんげんがあったとき、後者こうしゃふたつは "'したために不正ふせいである。なぜなら、"'かこったものは文字もじれつとしてあつかわれ、color プロパティがりうるいろ#rrggbbrgb([0-255], [0-255], [0-255]) 、または、 black や red などのキーワードなど)ではないからである。また、

p#id { color: #ff3300 }
p#id { font-size: 24px }

は、

p#id { color: #ff3300; font-size: 24px }

等価とうかである。;前者ぜんしゃのように宣言せんげんをセレクタにひとつずついてあるのを、ひとつのセレクタのブロックで記述きじゅつするときに宣言せんげんけるのに使つかう。そのため、かならずしも宣言せんげん; をつけるのを強制きょうせいするものではない。

セレクタは、実装じっそうレベルのたかいブラウザならばどの属性ぞくせいであっても CSS を適用てきようすることが可能かのうであり、この場合ばあい ID にかんする属性ぞくせいセレクタであるので、#id[id="id"]等価とうかである。セレクタの簡単かんたんなマッチングが可能かのうである。 そのほかHTMLタグにたいする適用てきよう文書ぶんしょ構造こうぞうからみた兄妹きょうだい構造こうぞう適用てきようするセレクタ、さらにはリンクや動的どうてき表現ひょうげん言語げんごかんする疑似ぎじクラス( :link:hover:lang )などがある。

優先ゆうせん順位じゅんい

[編集へんしゅう]

CSS はかならずしもひとつのところで一意いちい指定していできず、そのため指定してい内容ないよう衝突しょうとつけるために優先ゆうせん順位じゅんいがユーザーエージェントによって計算けいさんされる。その結果けっかは、以下いかのような条件じょうけんにより算出さんしゅつされる。

  • 作成さくせいしゃスタイルシートはユーザースタイルシートより優先ゆうせんされる
  • デフォルトスタイルシートはのスタイルシートを優先ゆうせんする
  • さい重要じゅうよう指定していされている宣言せんげんはユーザースタイルシートが作成さくせいしゃスタイルシートより優先ゆうせんされる(CSS1 ではぎゃく
  • 外部がいぶからんだものはんださきとまとめてあつか
  • 詳細しょうさいによって整理せいりする
    • そのセレクタない指定していさき一意いちいめられるもの(ID のるい)がおおほう優先ゆうせんする
    • ID のるいによる優先ゆうせん順位じゅんいおな場合ばあいは、属性ぞくせい擬似ぎじクラスのかずおおほう優先ゆうせんする
    • それでも優先ゆうせん順位じゅんいまらない場合ばあいは、要素ようそかずおおほう優先ゆうせんする
  • これでもまだ優先ゆうせん順位じゅんい同一どういつ場合ばあい作成さくせいしゃスタイルシートにおいて以下いかじゅん優先ゆうせんする
    1. インラインのもの
    2. 外部がいぶからのもの
  • HTML の align 属性ぞくせいなど、CSS 以外いがいによるスタイルの指定していは、それと等価とうかな CSS によるスタイル指定してい製作せいさくしゃスタイルシートの先頭せんとうにあるものとしてあつかう。ただし、これらの詳細しょうさいもっとひくいものとする(CSS1 においては要素ようそめいによる指定していひとつだけふくむセレクタとおな詳細しょうさい

記載きさい可能かのう方法ほうほう詳細しょうさいつぎとおりで、一般いっぱんてき優先ゆうせんされる順位じゅんいならえている(CSS2でさい重要じゅうよう指定してい優先ゆうせん順位じゅんい仕様しよう変更へんこうされている、勧告かんこく6しょう4)。

  1. ユーザスタイルシートちゅうさい重要じゅうよう指定していされた宣言せんげん - ユーザーエージェントの設定せっていのスタイルのなか!important宣言せんげん付加ふかする
  2. 作成さくせいしゃスタイルシートちゅうさい重要じゅうよう指定していされた宣言せんげん - 作成さくせいしゃ内容ないよう付随ふずいさせたスタイルちゅう!important宣言せんげん付加ふかする。
  3. 作成さくせいしゃスタイルシートちゅう通常つうじょう宣言せんげん
  4. ユーザースタイルシートちゅう通常つうじょう宣言せんげん
  5. デフォルトスタイルシートの宣言せんげん

作成さくせいしゃスタイルシートの記述きじゅつ方法ほうほうによる優先ゆうせん順位じゅんい以下いかとおり。

  1. 特定とくてい要素ようそにスタイルを記述きじゅつする
  2. HTML や XML のヘッダにそのページ全体ぜんたい対象たいしょうにスタイルを定義ていぎする
  3. CSS のみを記述きじゅつした外部がいぶファイルを用意よういし、HTML ファイルのヘッダからリンクをってスタイルを参照さんしょうさせる

継承けいしょう

[編集へんしゅう]

継承けいしょう(けいしょう、えい: Inheritance)はおや要素ようそから要素ようそへのプロパティ伝播でんぱである[1]

CSS の継承けいしょう機能きのうにより効率こうりつてきかつ意味いみろん沿ったスタイルけが可能かのうになる。たとえばホームページない<article><h2><div> の3階層かいそう構造こうぞうからなるミニ記事きじ場合ばあいかんがえる。ミニ記事きじまわりから区切くぎるために背景はいけいしょく<article style="background: #a9a9a9;">指定していする場合ばあい意図いととしてはミニ記事きじ全体ぜんたいすなわち <article>以下いかぜん要素ようそ背景はいけいわってほしい。CSS は継承けいしょうによりこれを実現じつげんする。すなわち、要素ようそ背景はいけいしょく指定していしない(<article style="background: #a9a9a9;"><h2><div>場合ばあいでも自動的じどうてきおや要素ようそのプロパティが要素ようそがれ、ミニ記事きじ全体ぜんたい背景はいけいわる。継承けいしょうがない場合ばあい、ミニ記事きじ<h2> ヘッダーしろ背景はいけいのままになってしまう。

勧告かんこくとう

[編集へんしゅう]

CSS の仕様しようにはレベルという段階だんかいがあり、2011ねん11月段階だんかいで、Level 1 から Level 4 までの仕様しよう公開こうかいされている。

Cascading Style Sheets, level 1 (CSS1), 勧告かんこく 1996ねん12月

[編集へんしゅう]

ボックスモデルの参考さんこう

マージン

ボーダー

パディング

内容ないよう

パディング

ボーダー

マージン

ボックスに width 属性ぞくせい設定せっていしたとき、W3C のボックスのモデルでは内容ないようよこはばであると解釈かいしゃくされる。そしてパディングとボーダーぶんよこはば要素ようそよこはば追加ついかされる。

他方たほうマイクロソフトのボックスのモデルでは width 属性ぞくせい内容ないようよこはばとパディングとボーダーぶんしたもの、すなわち要素ようそすべてのよこはばになる[2]。そのため Internet Explorer 5.5 以下いかと 6.0 以上いじょうおよび Internet Explorer 以外いがいのWebブラウザでの表示ひょうじちかづけるためには、パディングとボーダーを0にする、もしくはCSSハック使つか必要ひつようがある。

Internet Explorer 6 では DOCTYPE が正確せいかくならば標準ひょうじゅん準拠じゅんきょモードに移行いこうできる(ただ XML や XHTML の場合ばあい、XML 宣言せんげん仕様しようどおくと過去かこ互換ごかんモードでレンダリングされるバグがある)。

Cascading Style Sheets, level 2 (CSS2), 勧告かんこく 1998ねん5がつ

[編集へんしゅう]

CSS2 は CSS1 の上位じょうい互換ごかんいくつかの概念がいねん追加ついか拡大かくだい改訂かいていおこなわれた。

具体ぐたいてきには表示ひょうじ媒体ばいたい(モニターや TV、かみ媒体ばいたいなど)によって自動的じどうてきにスタイルシートを変更へんこうできるようにし、それに附随ふずいして音声おんせいブラウザへの対応たいおう印刷いんさつ媒体ばいたいへの対応たいおうおこなわれ、フォントなどの表示ひょうじ機能きのう拡張かくちょうや、ボックスの概念がいねん修正しゅうせいなどがおこなわれた。

ただし2002ねんごろ以降いこう発表はっぴょうされたCSS対応たいおうUAで、これを仕様しようなしているものは存在そんざいせず、実質じっしつてきに、CSS2.1 に仕様しようとしての役割やくわりゆだねたかたちになっている。CSS2勧告かんこく仕様しようしょにアクセスすると、CSS2 は管理かんりされておらず、仕様しよう参照さんしょう実装じっそうは CSS 2.1 をもとにせよと奨励しょうれいする注意ちゅういきがある。

Cascading Style Sheets, level 2 revision 1 (CSS 2.1), 勧告かんこく 2011ねん6がつ

[編集へんしゅう]

CSS2 の改訂かいていばん。CSS2仕様しようしょ不明瞭ふめいりょう定義ていぎ原因げんいんかくユーザーエージェントのCSS2実装じっそう互換ごかんしょうじたため、曖昧あいまい記述きじゅつ明確めいかくにする改訂かいていおこなわれた。また、 text-shadow プロパティのように、CSS2 で策定さくていされていながらながあいだ実装じっそうおこなわれなかったもの、display プロパティの run-in のように、複数ふくすうのユーザーエージェントで相互そうご運用うんようせい確保かくほできなかった機能きのう削除さくじょされている。それらは CSS3 以降いこうのレベルで定義ていぎされなおすことになる。

CSS の実装じっそうさいしてベンダは、2002ねんごろから CSS2.1 を基本きほん仕様しようなしている。

Cascading Style Sheets, level 3 (CSS3)

[編集へんしゅう]
CSS3のロゴ

CSS3以降いこうではCSS 2.1を中核ちゅうかくとし、あらたな機能きのう追加ついか改良かいりょうモジュールとすることで実現じつげんするものとする[3]。ユーザーエージェントはかくモジュールへ対応たいおうするかかを自由じゆう選択せんたくできるようになるほかたて方向ほうこうしょや、HTML以外いがい規格きかくにまで関与かんよした内容ないようとなっている。2023ねん11がつ現在げんざい勧告かんこくされているモジュールは以下いかとおり。

CSS3の主要しゅようモジュール仕様しようしょ[4]
モジュール 仕様しようしょタイトル 状態じょうたい 日付ひづけ
css3-background CSS Backgrounds and Borders Module Level 3  勧告かんこく候補こうほ草案そうあん 2023ねん2がつ
css-box-3 CSS Box Model Module Level 3 勧告かんこく 2023ねん4がつ
css-cascade-3 CSS Cascading and Inheritance Level 3  勧告かんこく 2021ねん2がつ
css-color-3 CSS Color Module Level 3 勧告かんこく 2022ねん1がつ
css3-content CSS Generated Content Module Level 3  草案そうあん 2019ねん8がつ
css-fonts-3 CSS Fonts Module Level 3 勧告かんこく 2018ねん9がつ
css3-gcpm CSS Generated Content for Paged Media Module 草案そうあん 2014ねん5がつ
css3-layout CSS Template Layout Module ノート 2015ねん3がつ
css3-mediaqueries  Media Queries 勧告かんこく 2012ねん6がつ
mediaqueries-4  Media Queries Level 4 勧告かんこく候補こうほ 2021ねん12月
css3-multicol  Multi-column Layout Module Level 1 勧告かんこく候補こうほ 2021ねん10がつ
css3-page CSS Paged Media Module Level 3 草案そうあん一部いちぶはcss3-breakへ) 2018ねん10がつ
css3-break CSS Fragmentation Module Level 3 勧告かんこく候補こうほ 2018ねん12月
selectors-3 Selectors Level 3 勧告かんこく 2018ねん11月
selectors-4 Selectors Level 4 草案そうあん 2022ねん11月
css3-ui CSS Basic User Interface Module Level 3 (CSS3 UI) 勧告かんこく 2018ねん6がつ

Cascading Style Sheets, Level 4 (CSS4)以降いこう

[編集へんしゅう]

CSS4はモジュールされたため、単一たんいつ統合とうごうされた仕様しよう存在そんざいせず、「Level 4」モジュールの総称そうしょうとなる[3]

Level 4 モジュールで追加ついかされる機能きのうは、Level 3 モジュールで未定義みていぎだったあたらしい機能きのうのほか、草案そうあん一度いちどふくまれながら、相互そうご運用うんようせい十分じゅうぶん確保かくほ出来でき仕様しようからはぶかれた機能きのうからなる。

いまだに勧告かんこく候補こうほいたっていないLevel 3モジュールが存在そんざいするなか勧告かんこく候補こうほになったLevel 4モジュール仕様しようしょMedia Queries Level 4CSS Conditional Rules Module Level 4などがある。このほか、Level 5、6のモジュール草案そうあんCSS Color Module Level 5CSS Cascading and Inheritance Level 6公開こうかいされている。

CSS Snapshot

[編集へんしゅう]

CSS Snapshot はある時点じてんにおける各種かくしゅ CSS 仕様しようしょ状態じょうたい集約しゅうやくした文書ぶんしょ (W3C Group Note) である[5]

CCS 2.1 よりのちの CSS は単一たんいつ仕様しようしょではなくかくモジュール仕様しようしょ総体そうたいにより定義ていぎされている。その副作用ふくさようとして CSS 全体ぜんたい状況じょうきょう俯瞰ふかんするのがむずかしくなっていた。CSS snapshot はこれを解決かいけつするために W3C CSSWG が発行はっこうしている Group Note である。Group Note であり正式せいしきな W3C 勧告かんこくではないが、より機動きどうてきに「CSS Snapshot 2023」といったかたちでおおよそ年次ねんじ発行はっこうされている。

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ ただし拡張かくちょう修正しゅうせいつづいているCSS仕様しようすべてを完全かんぜん実装じっそうしているユーザーエージェントは事実じじつじょう皆無かいむといってよく、実際じっさいシェアで多数たすうめるユーザーエージェントは部分ぶぶん対応たいおうにすぎない。しかし実用じつようじょう支障ししょうのないレベルの実装じっそうはされてきており、なおかつ表現ひょうげん互換ごかんせいについても考慮こうりょされてきている。

出典しゅってん

[編集へんしゅう]
  1. ^ "Inheritance propagates property values from parent elements to their children." W3C CSSWG. (2022). CSS Cascading and Inheritance Level 4, W3C Candidate Recommendation Snapshot, 13 January 2022.
  2. ^ en:Internet Explorer box model bug
  3. ^ a b World Wide Web Consortium (14 February 2023). "2.4 CSS Levels". CSS Snapshot 2023 (英語えいご). 2023ねん11月21にち閲覧えつらん
  4. ^ "All CSS specifications" (英語えいご). W3C. 6 September 2023. 2023ねん10がつ22にち時点じてんのオリジナルよりアーカイブ。2023ねん11月21にち閲覧えつらん
  5. ^ "CSS Snapshot 2023 ... This document collects together into one definition all the specs that together form the current state of Cascading Style Sheets (CSS) as of 2023." CSSWG. (2023). CSS Snapshot 2023.

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]