Float要素を均等幅で奇麗に並べる方法

July 31, 2013 Jul 23, 2018

 floatを使ってコンテンツを並べる際に、最後の要素だけ余白をつけない方法のいくつかをご紹介します。

CSSを使う

全体幅のmarginで調整

まず要素と要素の間の余白(A)を決め、全体幅(B)から引いた値(C)を、要素の数(D)で割ります。

例えば、(A)=10px、(D)=3、(B)=320pxの場合、320-10×2=300px。

この値を(D)で割ると1つの要素幅が100pxとなります。これをfloatで回り込ませて、余白10pxを指定すると、(100px+10px)×3=330pxとなり、全体幅から10pxはみ出てしまいます。そこで、親要素のulにmargin-right:-10pxを指定するのがポイントとなります。

<div class="wrapper">
	<ul>
    	<li>floatコンテンツ</li>
    	<li>floatコンテンツ</li>
    	<li>floatコンテンツ</li>
    </ul>
</div>
#wrapper {
	width: 320px; /*全体の幅*/
}
    #wrapper ul {
    width: 330px; /*マージンを含む子ボックス合計幅*/
    margin-right: -10px; /*はみ出しを調整*/
}
#wrapper ul li {
    width: 100px;
    float: left;
    margin-right: 10px;
}

last-childを使用

css3ではlast-childというスタイルがあり、これは疑似クラスの一種でリストの最後にだけスタイルを指定することができる。

ただし、最後の要素にしか適用されないため、1行毎に設計する必要がある。また、現時点でIE8等対応していないブラウザもあるため、推奨環境に応じて対策が必要です。

検索のヒント

 ” last-child IE8

jqueryを使う

jqueyにも各親要素内のすべての最後の子要素を選択するセレクターが用意されています。

覚えてしまえば簡単ですので、ぜひこちらも利用してみましょう。

 ” jquery last-child

RELATED POSTS