知ってると便利なCSSのテクニックのまとめ -CSS Protips
Post on:2015年10月5日
sponsorsr
リスト要素で実装したナビゲーションの右端のボーダーを取り除くシンプルな方法、flexboxで実装したカラム間の溝の最後の溝を取り除く方法、天地の中央に配置など、知ってると便利なCSSのテクニックを紹介します。

CSS Protipsのバージョンアップ版の紹介記事はこちら。
CSS ProtipsのライセンスはMIT Licenseで、個人でも商用でも無料で利用できます。
下記のスタイルシートの対応ブラウザはChrome, Firefox, Safari, Edge, IE11です。
- リスト要素の最後だけボーダーを適用・削除
- body要素に「line-height」を加える
- 天地の中央に配置
- ネガティブなnth-childを使用してアイテムを選択
- SVGファイルの指定
- box-sizingの継承
- flexboxのマージンハックを取り除く
リスト要素の最後だけボーダーを適用・削除
「:not()」を使用して、リスト要素で実装したナビゲーションの最後のアイテムだけにボーダーを適用・削除します。
まずは、今までの書き方。
/* まずは各アイテムの右にボーダーを... */
.nav li {
border-right: 1px solid #666;
}
/* ...続いて、最後だけ削除... */
.nav li:last-child {
border-right: 0;
}
「:not()」を使用するとシンプルなコードで指定できます。
/* ...最後のアイテム以外全てにボーダーを適用 */
.nav li:not(:last-child) {
border-right: 1px solid #666;
}
:not()など、疑似クラスの更にくわしい使い方は下記ページを参考に。
body要素に「line-height」を加える
body要素でline-heightを指定することでp, hnなどにその値が継承されるため、それぞれにline-heightを指定する必要がなくなります。
body {
line-height: 1;
}
天地の中央に配置
ページの天地の中央に要素を配置するシンプルなコードです。
※IE11ではflexboxのバグがあります(バグ情報)。
html, body {
height: 100%;
margin: 0;
}
body {
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-flex;
display: flex;
}
高さ不明の要素に対して天地中央に配置する場合は下記ページを参考に。
ネガティブなnth-childを使用してアイテムを選択
nth-childにはネガティブな値も指定できます。
li {
display: none;
}
/* 最初から3つ目までのアイテムを表示 */
li:nth-child(-n+3) {
display: block;
}
SVGファイルの指定
アイコンを使用する時に、SVGを使わない理由はありません。SVGはIE9以降のすべてのブラウザでサポートされています。
.logo {
background: url("logo.svg");
}
SVGスプライトなど、更にくわしい設置方法は下記ページを参考に。
box-sizingの継承
box-sizingはhtml要素で指定し、継承して利用すると、コンポーネントで変える時に簡単です。
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
flexboxのマージンハックを取り除く
flexboxでカラムの溝をつくる時、nth-, first-, last-childなどのハックで最後の溝を取り除くことができますが、それはflexboxのspace-betweenプロパティを使うだけで解決します。
.list-of-people {
display: flex;
justify-content: space-between;
}
.list-of-people .person {
flex-basis: 23%;
}
flexboxの実装については、下記ページを参考に。
sponsors











