2021.09.13

HTML・CSS

nth-childとlast-childの複合条件

デモページはこちら

3カラムで複数行のコンテンツの両側にCSSで角丸を設定します。コンテンツ数は可変の前提で、部分的に2カラムや1カラムになった時のパターンも考えていきます。

htmlの構造は以下の通りです。デモページではクラス名boxのliタグを6個、5個、4個の場合でそれぞれ確認します。

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

CSSはまずコンテンツ数6個の場合を考えていきます。1カラム目の:nth-child(3n + 1)の左側と3カラム目の:nth-child(3n)の右側に角丸を設定します。

.box:nth-child(3n + 1) {
	border-radius: 10px 0 0 10px;
}
.box:nth-child(3n) {
	border-radius: 0 10px 10px 0;
}

次にコンテンツ数5個の場合を考えていきます。最後の行が2カラムになり、現状は5個目のコンテンツに角丸が設定されていません。そこで最後のコンテンツのみ右側に角丸を設定します。

.box:last-child {
	border-radius: 0 10px 10px 0;
}

最後にコンテンツ数4個の場合を考えていきます。最後の行が1カラムになり、4個目のコンテンツは左側にのみ角丸が設定されています。ですが、4個目のコンテンツは最後のコンテンツでもあるため、CSSで後に記述した右側のみの角丸が有効になっています。

ここでnth-childとlast-childの複合条件を利用します。1カラム目のコンテンツでなおかつ最後のコンテンツである場合、両側に角丸を設定します。

.box:nth-child(3n + 1):last-child {
	border-radius: 10px;
}

これで、3カラム複数行でコンテンツ数可変であっても、コンテンツの両側にCSSで角丸を設定することができます。

関連記事

2021.07.06

HTML・CSS

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

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

2020.06.27

HTML・CSS

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

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

2022.05.12

HTML・CSS

asideタグの使い方

asideタグはメインコンテンツの内容と関連はしているが、メインコンテンツではない補足情報を表します。主に「バナー広告」「関連記事」「サイドバー」「モーダルコン…

2024.08.19

HTML・CSS

縦書き文字の配置について

縦書きの文字を写真の左上・左中・左下・右上・右中・右下に配置します。デモページはこちら 以下のhtml構造で確認します。 CSSはpositionとtransf…

2020.08.19

HTML・CSS

iOS Safariのツールバーと表示エリアの挙動

iOS Safariで表示される画面下部のツールバーは、下にスクロールすると非表示になります。正確には上部のアドレスバーが小さくなり、下部のツールバーが消えます…

上に戻る