2021.09.13

HTML・CSS

nth-childの関数表記でカラムごとにCSSを設定

デモページはこちら

3カラムで複数行のコンテンツに、カラムごとに背景色のCSSを設定します。3カラムの場合、1カラム目は:nth-child(3n + 1)、2カラム目は:nth-child(3n + 2)、3カラム目は:nth-child(3n)のようにnth-childの関数表記が適用できます。

以下のhtmlで確認します。デモページではクラス名boxのliタグは12個並べています。

<ul class="container">
	<li class="box">
		<p>ダミーテキストダミーテキストダミーテキスト</p>
	</li>
	<li class="box">
		<p>ダミーテキストダミーテキストダミーテキスト</p>
	</li>
	<li class="box">
		<p>ダミーテキストダミーテキストダミーテキスト</p>
	</li>
</ul>

CSSはまずクラス名boxのliタグ全てに1カラム目の背景色を設定します。そして、2カラム目と3カラム目は:nth-child(3n + 2)と:nth-child(3n)を利用して上書きします。そのため、今回:nth-child(3n + 1)は使用しません。

関数内のnには正の整数が入り、0から始まります。結果、:nth-child(3n + 1)は「1、4、7、10、13・・・」、:nth-child(3n + 2)は「2、5、8、11、14・・・」の順番のliタグにCSSが適用できます。

.container {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	margin: -10px -5px 0;
}
.box {
	width: calc(33.33% - 10px);
	margin: 10px 5px 0;
	padding: 1em;
	background: #e0d4c3;
	counter-increment: index;
}
.box:before {
	display: block;
	margin: 0 0 1em;
	font-family: 'Patua One', cursive;
	font-size: 2rem;
	font-weight: 400;
	color: #fff;
	content: counter(index, decimal-leading-zero)'.';
}
.box:nth-child(3n + 2) {
	background: #dec49f;
}
.box:nth-child(3n) {
	background: #cca163;
}

なお、liタグの疑似要素のcontentプロパティには、CSSのcounter関数で連番を指定しています。

関連記事

2021.07.04

HTML・CSS

background-positionプロパティを利用した背景画像の右寄せ

background-positionプロパティを利用して背景画像を右寄せします。Y軸方向の位置は中央寄せにします。単純な右寄せであればbackground-p…

2021.07.06

HTML・CSS

background-imageプロパティを利用した高さ可変の三角形

borderプロパティで三角形を作成した場合、高さを可変にすることができません。そこで、background-imageプロパティのlinear-gradien…

2022.08.28

HTML・CSS

親要素にtransformが設定されている場合のposition: fixed;

通常、position: fixed;でtop: 0;left: 0;の場合、画面の左上が基準位置になります。しかし、親要素(先祖を含む)にtransformが…

2020.06.27

HTML・CSS

iOSのブラウザでセレクトボックスの文字を省略せずに表示

iOSのブラウザではセレクトボックスに長いテキストの選択肢がある場合、途中で省略して表示されます。省略記号「…」が付いて選択肢が最後まで読めません。これを全て表…

2020.10.10

HTML・CSS

CSSのflexbox使用時の注意点

デモページはこちら CSSのflexbox使用時の注意点をまとめました。flexboxは使い方によってレイアウトに表示崩れが発生するパターンがあります。 fle…

上に戻る