CSS > CSSの基本
CSSのバージョンには、
しかし、CSSファイルには「バージョン」を指定する記法がないので、指定したCSSの反映はブラウザの対応状況に依存する。
CSSは、
p { color: red; }
CSSではコメントを「/*」と「*/」で囲む。
/* コメント */
XHTMLに適用するCSSを指定する方法は、4つある。
#code(css,nomenu){{
link rel="stylesheet" type="text/css" href="css/style.css" />
}}
#code(css,nomenu){{
style type="text/css">
@import "css/style.css"/style>
}}
#code(css,nomenu){{
style type="text/css">
p { margin: 15px; }/style>
}}
#code(css,nomenu){{
p style="margin: 15px;">テキスト</p>
}}
「link」や「@import」で読み込むCSSファイルの先頭行に「@charset "…";」で文字コードを記述しておく。
#code(css,nomenu){{
@charset "UTF-8";
}}
日本語ページの場合は、
あくまでもCSSファイルで使用する文字コードの指定であり、XHTMLの文字コードとは関係ない。
XHTMLと別の文字コードでも問題ないが、特に理由がなければXHTMLの文字コードと同じにしておく。
CSSを適用するメディア(デバイス、ソフトウェア)を、「メディアタイプ」によって指定することができる。
カンマ区切りで並べて、複数のメディアタイプを同時に指定できる。
メディアタイプを指定しない場合は、CSSがすべてのメディアに適用される。
メディアタイプ | デバイスやソフトウェア |
all | すべてのメディア |
screen | 一般的なパソコンのモニタ |
projection | プロジェクター・映写機 |
tv | テレビ・テレビゲーム機など |
handheld | 携帯端末(PDA・携帯電話)など |
tty | 固定ピッチフォントで表示される端末 |
プリンタ(印刷プレビューなどを含む) | |
speech | 音声読み上げ(音声ブラウザなど) |
braille | 点字ピンディスプレイなど |
embossed | 点字プリンタなど |
#code(css,nomenu){{
link ref="stylesheet" type="text/css" href="css/screen.css" media="screen, projection" />
}}
#code(css,nomenu){{
link ref="stylesheet" type="text/css" href="css/tv.css" media="tv" />
}}
#code(css,nomenu){{
link ref="stylesheet" type="text/css" href="css/print.css" media="print" />
}}
#code(css,nomenu){{
link ref="stylesheet" type="text/css" href="css/handheld.css" media="handheld" />
}}
#code(css,nomenu){{
@import url("projection.css") projection;
}}
#code(css,nomenu){{
@media print {
body { font-size: medium; }
}
}}
スタイルの適用対象を指定するのが「セレクタ」
名称 | セレクタ | 意味 | 例 |
ユニバーサルセレクタ | * | すべての要素 | * { color: #000000; } |
タイプセレクタ | E | その要素(E) | p { color: #222222; } |
子孫セレクタ | E F | 親要素(E)に含まれる子孫要素(F) | p em { color: #cc0000; } |
子セレクタ | E > F | 兄要素(E)に含まれる直接の子要素(F) | p > em { color: #cc0000; } |
隣接セレクタ | E + F | 兄要素(E)の直後の弟要素(F) | h1 + p { color: #222222; } |
クラスセレクタ | .classname | class属性値が「classname」の要素 | .note { color: #ff0000; } |
IDセレクタ | #idname | id属性値が「idname」の要素 | #header { color: #006600; } |
属性セレクタ | E[attr] | 要素(E)がその属性(attr)をもつ場合 | input[type] { padding: 2px; } |
E[attr="value"] | 要素(E)がその属性(attr)と値(value)をもつ場合 | input[type="text"] { padding: 2px; } | |
E[attr~="value"] | 要素(E)がその属性(attr)をもち、属性値が空白文字区切りで複数指定されており、その属性値(value)が含まれている場合 | p[class~="moveto"] { color: #000066; } | |
E[attr|="value"] | 要素(E)がその属性(attr)をもち、属性値が空白文字区切りで複数指定されており、その属性値(value)が前方一致で含まれている場合 | div[lang|="en"] { font-size: small; } |
セレクタの記号について
名前 | セレクタ | 意味 | 例 |
リンク擬似クラス | :link | 未訪問リンクのとき | a:link { color: #000080; } |
:visited | 既訪問リンクのとき | a:link { color: #800080; } | |
ダイナミック擬似クラス | :hover | 要素がカーソルオンされたとき | a:hover { color: #ff0000; } |
:focus | 要素がフォーカスされたとき | a:focus { color: #ff0000; } | |
:active | 要素がアクティブになったとき | a:active { color: #ff0000; } | |
言語擬似クラス | :lang() | 要素に言語コードが指定されているとき | div:lang(en) { font-size: small; } |
:first-child擬似クラス | :first-child | 要素の中の最初の子要素 | div:first-child { font-style: italic; } |
:first-line擬似要素 | :first-line | 要素の1行目のみ | p:first-line { font-weight: bold; } |
:first-letter擬似要素 | :first-letter | 要素の1文字目のみ | h2:first-letter { font-size: large; } |
:before/:after擬似要素 | :before | 要素の直前に内容を生成 | #main:before { content: "本文ここから"; } |
:after | 要素の直後に内容を生成 | #main:after { content: "本文ここまで"; } |
リンク擬似クラスとダイナミック擬似クラスを一緒に使う場合、指定する順番がある。
=ユーザーによるアクションの順番にする。
コンテンツ範囲を示すID名やクラス名を基に、子孫セレクタでスタイルを適用
#code(css,nomenu){{
#header {
height: 60px; background: #33cccc url(../images/header.jpg);
}
#header h1 {
padding-top: 20px; padding-left: 15px; color: #ffffff;
}
#header h1 a {
color: #0000ff;
}
}}
擬似クラスも利用した、やや複雑な子孫セレクタの例
#code(css,nomenu){{
#main .highlight ul li a:link {
color: #000080;
}
#main .highlight ul li a:visited {
color: #800080;
}
}}
子孫セレクタで、構造を示すIDやクラスは、タイプセレクタ(要素名)をつけないことが多い。
「div#header」ではなく、単に「#header」と指定する。
子孫セレクタをつなげて記述する場合、いちいち「div」が出てくると見づらくなるため省略する。
セレクタはカンマ区切りでグループ化して、同じスタイルを同時に指定可能。
#code(css,nomenu){{
h1,h2,h3 {
color: #ff6600;
}
}}
グループ化するセレクタが長いときは、カンマごとに改行すると見やすくなる。
最後のセレクタには、カンマを付けないので注意。
#code(css,nomenu){{
#utility-nav ul li a:link,
#global-nav ul li a:link,
#local-nav ul li a:link {
color: #0000cc;
}
#utility-nav ul li a:visited,
#global-nav ul li a:visited,
#local-nav ul li a:visited {
color: #cc0000;
}
}}
http://html-coding.co.jp/knowhow/tips/000014/
ボックスモデルの概念
ボックスモデルとはブロックレベル要素がもつ短形領域の概念で、内容・マージン(margin)・パディング(padding)・ボーダー(border)から構成されます。
http://www.justmystage.com/home/hodogaya/css11.html
マージン領域は常に透明として扱われます
ボックスと背景の関係ボックスに背景を指定した場合、内容領域、パディング、ボーダーの各領域には、指定した背景が適用されるが、マージンの領域は常に透明として扱われます。
プロパティ | 効果 | 指定できる値 | |
マージン | margin | マージンの一括指定 | 長さ、%、auto |
margin-top | 上下左右のマージン | 長さ、%、auto | |
margin-right | |||
margin-bottom | |||
margin-left | |||
ボーダー | border | ボーダーの一括指定 | 太さ、形状、色をスペース区切りで |
border-width | ボーダーの太さ | 長さ、thin、medium、thick | |
border-style | ボーダーの形状 | solid、dotted、dashed、noneなど | |
border-color | ボーダーの色 | #rrggbb、#rgb、色名、transparentなど | |
border-top | 上下左右のボーダー | 太さ、形状、色をスペース区切りで | |
border-right | |||
border-bottom | |||
border-left | |||
パディング | padding | パディングの一括指定 | 長さ、% |
padding-top | 上下左右のパディング | 長さ、% | |
padding-right | |||
padding-bottom | |||
padding-left | |||
幅と高さ | width | 内容の幅 | 長さ、%、auto |
height | 内容の高さ | 長さ、%、auto | |
幅と高さの最大/最小 | max-width, max-height | 内容の最大幅と最大高さ | 長さ、%、none |
min-width, min-height | 内容の最小幅と最小高さ | 長さ、% |