nlog

とめどなく流れるよだれ

display: flow-root で clearfix とおさらば

f:id:namikuguri:20180130234834p:plain

cleafix は要素の回り込みを回避するための手段としてこれまで使われてきた。この clearfix に変わるのが display: flow-root だ(まだ ChromeFirefox でしか使えない)。

ひとつ前置きをするが、display: flow-root の前に、clearfix のおさらいとして KOJIKA 17 さんのブログを見ると良いかもしれない。clearfix の歴史が追える上に解説がわかりやすい。

さて、IE7 以下を気にしなくなったいま、もっとも多く使われてるのはこの記事で紹介されている「micro clearfix よりも、もっとコンパクトな clearfix」にだと思う。つまり以下のような指定だ。

.clearfix:after {
  content: "";
  clear: both;
  display: block;
}

また、回り込みを回避する方法として、親要素に overflow: hidden を使う方法もある。

.content {
  overflow: hidden;
}

これら 2つに置き換わる回り込み回避の方法として、display: flow-rootCSS の仕様としてつくられた。指定方法は以下のようになる。

.content {
  display: flow-root;
}

親要素に display: flow-root を指定することで、子要素の回り込みを回避する。

clearfix を使う手法は親要素の疑似要素をひとつ潰してしまうが、display: flow-root では潰さずに済む。また、overflow: hidden を使う方法はシャドウなど親要素から一部必要な見た目も切り取ってしまう。display: flow-root ではこういった問題もないので、サポートが整ったら使う他なさそうだ。

参考

-clearfixの必要がなくなる新しいプロパティをW3Cが定義、一部のブラウザでもう使える! | コリス - 【2017年最新】clearfix一番短い書き方は親要素にdisplay:flow-root;を書き加えるだけ | CODE-LIFE