:contains() 疑似クラスで「foo が bar を含む」セレクターを作成

2024-04-02

CSSセレクター「foo が bar を含む」

この解説では、HTML要素 foo が文字列 bar を含む場合に適用されるCSSセレクターについて説明します。いくつかの方法があり、それぞれ異なる利点と欠点があります。

方法 1: :contains() 疑似クラス

最も簡単な方法は、:contains() 疑似クラスを使用するものです。

.foo:contains(bar) {
  /* スタイル */
}

このセレクターは、foo 要素内のテキストノード全体を検索し、bar 文字列を含む要素にスタイルを適用します。部分一致だけでなく完全一致にも対応します。

利点:

  • シンプルで分かりやすい
  • 部分一致と完全一致の両方に対応
  • パフォーマンスが遅い可能性がある
  • ネストされた要素には適用されない
  • 大文字と小文字を区別しない

より複雑な条件を設定するには、:matches() 疑似クラスを使用できます。

.foo:matches(:contains(bar), .bar) {
  /* スタイル */
}

このセレクターは、foo 要素が bar 文字列を含むか、bar クラスを持つ場合にスタイルを適用します。

  • 複数の条件を組み合わせられる
  • 少し複雑

方法 3: ::text 疑似要素

大文字と小文字を区別したい場合は、::text 疑似要素を使用できます。

.foo::text:contains(bar) {
  /* スタイル */
}
  • 部分一致には対応しない



HTML:

<div class="foo">
  <h1>タイトル</h1>
  <p>本文にbarが含まれています</p>
  <span class="bar">bar</span>
</div>

CSS:

/* 方法 1: :contains() 疑似クラス */

.foo:contains(bar) {
  color: red;
}

/* 方法 2: :matches() 疑似クラス */

.foo:matches(:contains(bar), .bar) {
  background-color: yellow;
}

/* 方法 3: ::text 疑似要素 */

.foo::text:contains(bar) {
  font-weight: bold;
}

結果:

  • 方法 1: foo 要素内のすべてのテキストが赤色になります。
  • 方法 2: foo 要素内の bar 文字列と bar クラスを持つ要素が黄色になります。

このコードを参考に、目的に合ったCSSセレクターを作成してください。




他の方法

:has() 疑似クラスは、特定の子要素を持つ要素を選択できます。

.foo:has(:text(bar)) {
  /* スタイル */
}
  • ブラウザの対応状況がまだ限定的

:is() 疑似クラスは、複数のセレクターを組み合わせて、1つのセレクターとして使用できます。

.foo:is(:contains(bar), .bar) {
  /* スタイル */
}

上記2つの方法は、まだブラウザの対応状況が限定的ですが、将来的には主流になる可能性があります。


css css-selectors


Webデザインの幅が広がる!画像を重ねる高度なテクニック

方法 1: position プロパティを使うこの方法は、CSSの position プロパティを使って、画像の位置を調整します。手順:親要素に position: relative を設定します。子要素の top、left、bottom、right プロパティを使って、画像の位置を調整します。...


【デザインの幅が広がる】HTML、CSS、フォームでフォーム入力欄にアイコンを埋め込む

HTMLまず、HTMLを使用してフォームと入力欄を作成します。 以下は、アイコン付きの検索フォームの例です。この例では、<div class="input-with-icon"> 要素を使用して、入力欄とアイコンをグループ化しています。 <span class="icon"> 要素には、Font Awesomeアイコンライブラリを使用して検索アイコンが挿入されています。...


【保存版】CSSでdivの高さを100%マイナスnpxに設定するサンプルコードと解説

Webページにおいて、divの高さを親要素の高さ100%から特定のピクセル数(npx)を引いた値に設定したい場合があります。これは、ヘッダーやフッターなどの要素の高さを考慮して、残りの領域をdivに割り当てたい場合などに役立ちます。方法この目的を達成するには、主に以下の2つの方法があります。...


HTML、CSS、ホバーイベント:要素がホバーされた時に他の要素に影響を与える方法

このチュートリアルでは、HTML、CSS、ホバーイベントを使用して、要素がホバーされたときに他の要素に影響を与える方法について解説します。具体的には、以下の3つの方法を紹介します。CSSセレクタCSSプロパティJavaScriptCSSセレクタを使用して、ホバーされた要素とその子孫要素にスタイルを適用できます。...


CSSで画像のサイズ変更と縦横比を維持する方法

そこで、今回はCSSを使って画像のサイズ変更と縦横比の維持を強制する方法を紹介します。widthとheight属性を使うこれは最も基本的な方法です。widthとheight属性をそれぞれ指定することで、画像の幅と高さをピクセル単位で指定できます。...


SQL SQL SQL SQL Amazon で見る



CSS :active と :hover を使いこなす!親要素とアクティブな子要素のスタイリング

例:ナビゲーションバーに複数のリンクがあるとします。ユーザーがリンクをクリックすると、そのリンクがアクティブ状態になります。アクティブなリンクの親要素である <li> 要素にスタイルを適用したい場合は、以下のセレクターを使用できます。このセレクターは、以下の条件を満たす要素を選択します。


CSSの子要素セレクタ:親要素と子要素の関係を活かしたスタイル適用

CSSを使って子要素にスタイルを適用するには、いくつか方法があります。それぞれの特徴と使い分けを以下に説明します。子要素セレクタこれは最も基本的な方法で、親要素と子要素の関係を使ってスタイルを適用します。記法は以下の通りです。例:この例では、.parent クラスを持つ要素の子要素である <p> 要素全てに、赤色で太字のスタイルが適用されます。


CSSの :has() 疑似クラスで親要素のスタイルを変化させる

親要素の直後に存在する子要素のみを対象にスタイルを適用できます。例:このコードは、div 要素の直下にある p 要素のみを赤色で表示します。このコードは、p 要素を持つ div 要素のみをオレンジ色で表示します。上記の方法は、いずれも親要素と子要素の間に親子関係が存在する必要があります。


Webデザインをレベルアップさせる兄弟セレクターの活用術

指定された要素の直後に続く兄弟要素同じ親要素を持つ要素の種類が一致する例:上記のコードは、<h1> 要素の直後に続く <p> 要素を赤色にします。注意点:プラス記号 (+) は、直接隣接する兄弟要素のみを選択します。間に他の要素があると、選択されません。


CSSセレクター vs JavaScript: 要素内のテキストを選択する

直接子孫セレクター (>)親要素の直下に存在する子要素のみを選択します。この例では、<p>要素の直下にある<span>要素のみが対象になります。直接子孫セレクターに似ていますが、間に空白文字を含む子要素も選択できます。兄弟要素同士が直接隣接している場合にのみ選択できます。


nth-of-type() vs. first-child:最初の要素を選択する

CSSセレクターを使用すると、HTMLドキュメント内の特定の要素を選択してスタイルを適用することができます。クラス名を持つ最初の要素を選択するには、いくつかの方法があります。方法element. className要素の class 属性の値を直接セレクターとして使用できます。


JavaScriptで動的にスタイルを適用:2つのクラスを持つ要素をカスタマイズする方法

この目的には、以下の3つの方法でCSSセレクターを使用できます。カンマ区切り複数のクラスセレクターをカンマで区切ると、そのすべてのクラスを持つ要素にスタイルが適用されます。上記の例では、buttonクラスとprimaryクラスを持つ要素は、白色のテキストになります。


CSSセレクターを使いこなして、思い通りのWebページデザインを実現しよう

答え:はい、可能です。方法:否定擬似クラス :not() を使う :not() を使って、除外したいセレクターを指定します。 /* .button 以外すべての要素に赤枠 */ .button:not(.button) { border: 1px solid red; }


【CSS】チルダ記号(~)の完全解説!隣接する要素にスタイルを適用する方法

例:この例では、.container要素の直後に存在するp要素のみが赤色で表示されます。h1要素とp要素の間には他の要素が存在しても構いませんが、h1要素とp要素が直接隣接している場合のみ、p要素にスタイルが適用されます。チルダ記号の利点:


あなただけのオリジナルデザイン!CSSフィルターで魅せるWebサイト

HTMLファイルCSSファイル背景画像を設定したい要素に background-image プロパティを使って、画像ファイルを指定します。filter プロパティを使って、適用したいフィルターを指定します。blur(): ぼかし効果brightness(): 明るさ調整