フロントの人の雑多メモ

【CSS】特定の要素「以外」を指定する:not()否定クラスの使い方

【CSS】特定の要素「以外」を指定する:not()否定クラスの使い方

CSSで:not()「否定の擬似クラス」を使い、特定の要素以外を指定するセレクタの書き方をご紹介します。

:not() - CSS: カスケーディングスタイルシート | MDN

また、これを応用したセレクタの書き方も紹介しています。

例①

このようなHTMLだとします。

<ul>
	<li>リスト</li>
	<li>リスト</li>
	<li>リスト</li>
	<li class="target">特定の要素</li>
	<li>リスト</li>
	<li>リスト</li>
</ul>

このようなCSSを書くと

ul li:not(.target) {
	color: red;
}

こうなります。

  • リスト
  • リスト
  • リスト
  • 特定の要素
  • リスト
  • リスト

.target以外が赤くなっていますね。

もう一度、セレクタを確認してみると

ul li:not(.target)

これで「ulの中のli ただし.targetは除く」って意味になります。

例②

このようなHTMLだとします。

<ul>
	<li>リスト1-1</li>
	<li>リスト1-2</li>
	<li>リスト1-3</li>
</ul>
<ul class="target">
	<li>リスト2-1</li>
	<li>リスト2-2</li>
	<li>リスト2-3</li>
</ul>

このようなCSSを書くと

ul li:not(.target li) {
	color: red;
}

こうなります。

  • リスト1-1
  • リスト1-2
  • リスト1-3
  • リスト2-1
  • リスト2-2
  • リスト2-3

「.targetの中のli」以外の「ul li」が赤くなっています。

例③

このようなHTMLだとします。

<ul>
	<li>リスト1-1</li>
	<li>リスト1-2</li>
	<li>リスト1-3</li>
</ul>
<ul class="target">
	<li>リスト2-1</li>
	<li>特定の要素</li>
	<li>リスト2-3</li>
</ul>

このようなCSSを書くと

ul li:not(.target li:nth-child(2)) {
	color: red;
}

こうなります。

  • リスト1-1
  • リスト1-2
  • リスト1-3
  • リスト2-1
  • 特定の要素
  • リスト2-3

「.targetの中の2番目のli」以外の「ul li」が赤くなっています。

例④

このようなHTMLだとします。

<div class="target">
	<p>文章1</p>
	<p>文章2</p>
	<div>
		<p>文章3</p>
	</div>
</div>

このようなCSSを書くと

.target p:not(.target > p) {
	color: red;
}

こうなります。

文章1

文章2

文章3

「.target 直下の p」以外の「.target p」が赤くなっています。

このように:not()の中は結構自由に書けて、否定したいセレクタを入れれば否定されます。

コメント

内容を確認の上、個人情報などは省いて掲載させていただきます。

直接送信されます。確認の上、「送信」してください。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア