文法
セレクタ
- タグはそのまま記述
- idの場合は”#”に続けて記述
- クラスの場合は”.”に続けて記述
1 2 3 4 5 6 7 8 9 10 11 |
div { //divタグ全てに反映される } #example_id { //たとえばdiv id="example_id"の部分に反映される } .example_class { //たとえばp class="example_class"の部分に反映される } |
入れ子のタグの指定
入れ子の中のタグを指定するときは、親要素と子要素の間に半角スペースを入れる。
1 2 3 |
div#example_id p { //div id="example_id"の中のpタグ全てに反映される } |
一括指定
異なるセレクタに同じ設定を適用する場合は、”,”で区切って列挙。
1 2 3 |
header, footer { //headerとfooterに同じ設定が反映される } |
padding
値を1つ指定すると、上下左右に同じ値でパディング。
1 2 3 |
<div class="someclass"> padding: 20px; </div> |
値を2つ指定すると、1つ目の値で上下に、2つ目の値で左右にパディング。
1 2 3 4 5 6 7 8 |
<div class="someclass"> padding: 20px, 60px, 30px, 40px; /* top & bottom -> 20px left & right -> 40px */ </div> |
値を4つ並べて指定すると、それぞれtop、right、bottom、leftのpadding値になる(上から時計回り)。
1 2 3 4 5 6 7 8 9 10 |
<div class="someclass"> padding: 20px, 40px; /* top -> 20px right -> 60px bottom -> 30px left -> 40px */ </div> |
padding値を個別に指定することも可能。
1 2 3 4 5 6 |
<div class="someclass"> padding-top: 20px; padding-right: 60px; padding-bottom: 30px; padding-left: 40px; </div> |
ベンダー・プレフィックス
ブラウザ | プレフィックス |
---|---|
FireFox | -moz- |
Google Chrome, Safari | -webkit- |
Opera | -o- |
Internet Explorer | -ms- |
box-sizing
要素のサイズには、margin、borderの幅、paddingは加味されないため、 サイズ指定が煩雑になり、時に意図しない結果になる。
たとえばHTML5のbodyとnavブロック、sectionブロックの幅を ピクセル単位で指定し、 mavとsectionがbodyの幅にピッタリ納まるようにしたいとき、 各々にmarginなどをを設定していると、 その分だけ意図するサイズから差し引いた値をwidthに設定しなければならない。
HTML5では、box-sizing属性をborder-boxにすることでこれを解消し、 paddingとborderを含めたサイズでwidthを指定できるようになる。以下の例は、 div要素のboxクラスに対して以下の属性を適用し、box-sizing属性を変えた例。
1 2 3 4 5 6 7 8 |
div.box { border-style:solid; border-color:black; width:300px; margin:20px; border-width:5px; padding:10px; } |
border-sizingをborder-boxにするため、デフォルトで読み込むCSSファイルに 以下を記述。この際、各ベンダーのブラウザに対応させるため、 ベンダー・プレフィックスをつけておく。
1 2 3 4 5 6 7 |
* { box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } |
calc()ファンクション
CSS3で実装された機能で、動的にブロックの幅などを計算できる。 ブラウザによって実装状況が異なるので、ベンダー・プレフィックスを 付けて列挙するのが安全。
1 2 3 4 5 6 7 8 9 10 11 |
.sidebar { float: left; width: 180px; background-color: #478384 } .main-content { float: right; width: calc(100% - 180px); width: -webkit-calc(100% - 180px); } |
ぶら下げインデント
CSS3ではtext-indent属性にhangingスイッチが定義されているが、 Chromeのバージョン47.0.2526.73 mでは再現できなかった。
paddingとtext-indentを使って同じ効果を得る方法がネット上で紹介されている。 paddingで全体を右へ移動させ、text-indentに負の値を指定することで 先頭のみ元の場所へ戻す。
1 2 3 4 |
.comment { padding-left: 1em; text-indent: -1em } |
position: ~で右寄せ
親要素にposition: relativeを指定し、子要素でposition: absoluteとright: 0やbottom: 0などを指定すると、子要素を親要素の右端や下端に寄せることができる。要素の右寄せなどに簡易に使えるかもしれない。
HTML
1 2 3 4 |
<div class="parent"> <span class="child1">Child1</span> <span class="child2">Child2</span> </div> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
.parent { margin: auto; position: relative; width: 60%; height: 100px; background-color: #0cc; } .child1 { position: absolute; left: 20px; top: 30px; } .child2 { position: absolute; right: 0; bottom: 0; } |