知ってると便利なCSSのテクニックのまとめ -CSS Protips

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

CSS Protips

CSS Protips -GitHub

CSS Protipsのバージョンアップ版の紹介記事はこちら。

CSS ProtipsのライセンスはMIT Licenseで、個人でも商用でも無料で利用できます。
下記のスタイルシートの対応ブラウザはChrome, Firefox, Safari, Edge, IE11です。

リスト要素の最後だけボーダーを適用・削除

「: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の実装については、下記ページを参考に。

top of page

©2017 coliss