2020-01-07 更新

floatの代わりにflexboxを使ってみる

コンテンツの表示エリアの左右両端にデータを表示する際、スタイルに「float」を指定した要素で振り分けを行っていましたが、CSS3ではflexboxを使ってそういった表示ができるようなので、ちょっと試してみました。

動作確認

まずはfloatで指定

leftエリア
rightエリア

html


<div class="float-content">
    <div class="content-item float-01">leftエリア</div>
    <div class="content-item float-02">rightエリア</div>
    <div class="clearfix"></div>
</div>

css


.content-item{
    width:100px;
    line-height:50px;
    text-align:center;
    background-color:#ddf;
    border:1px solid #ddd;
}
.float-content{
    width:100%;
    max-width:500px;
    background-color:#eee;
    border:1px solid #ddd;
}
.float-content .float-01{
    float: left;
}
.float-content .float-02{
    float: right;
}
.clearfix{clear:both;}

同じものをflexboxで。

>leftエリア
rightエリア

html


<div class="flexbox-content">
    <div class="content-item">leftエリア</div>
    <div class="content-item">rightエリア</div>
</div>

css


.content-item{
    width:100px;
    line-height:50px;
    text-align:center;
    background-color:#ddf;
    border:1px solid #ddd;
}
.flexbox-content{
    width:100%;
    max-width:500px;
    background-color:#eee;
    border:1px solid #ddd;
    /* flexboxで必要な設定 */
    display:flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
}

また、floatとflexboxの違いとして上記の構成で2つの要素が重なった場合、floatは上段にleftエリア、下段にrightエリアと表示が崩れるのに対して、flexboxの場合は上段・下段に分かれることはなく、tableタグのように左右の配置が崩れることはありませんでした。

flexboxは他にもいろいろなパターンでの表示が可能なようなので、CSS3のみの対応でよければ、floatよりもflexboxを使っていきたいですね。

参考リンク

CSS】関連記事