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関数で連番を指定しています。

関連記事

2024.08.22

HTML・CSS

box-shadowで作る縁取りの枠線

box-shadowプロパティの重なりを利用して、縁取りの枠線を作ります。デモページはこちら box-shadow: 水平方向の距離 垂直方向の距離 ぼかしの距…

2020.10.10

HTML・CSS

CSSのflexbox使用時の注意点

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

2020.09.04

HTML・CSS

viewportの指定について

レスポンシブでサイトを制作する場合、HTMLでviewport、CSSでメディアクエリ、両方を設定する必要があります。CSSでメディアクエリを記述しても、vie…

2022.08.30

HTML・CSS

linear-gradientを利用した文字の下線

background-imageプロパティのlinear-gradientを利用して複数行の文字に下線を引きます。複数行に対応させるため、inline要素に適用…

2022.07.17

HTML・CSS

Google Fontsの読み込みをDNSプリフェッチで最適化

DNSプリフェッチを利用すると、外部ドメイン名(ホスト名)の名前解決(DNSルックアップ)を事前に強制できます。 WEBページ表示時ブラウザが外部ドメインにアク…

上に戻る