CSS ・ CSSの記法

疑似要素

要素の一部分や追加部分を指定する

要素の「最初の1文字」「前後に追加する装飾」のように、HTMLには書かれていない部分を作って指定する仕組みです。セレクタの後ろに「::(コロン2つ)」を付けて書きます。

書き方
セレクタ::疑似要素名 { }
記号
::(コロン2つ)
詳細度
0-0-1(≒1点、要素と同じ)
01

サンプルコード

HTML
1<p class="intro">ようこそ、カフェ・ミモザへ。季節のケーキと自家焙煎のコーヒーをお楽しみください。</p>
2<h2 class="heading">メニュー</h2>
CSS
1.intro::first-letter {
2 font-size: 2em;
3 font-weight: bold;
4 color: #b68235;
5}
6.heading::before {
7 content: "■ ";
8 color: #b68235;
9}
10.heading::after {
11 content: " ―";
12 color: #ccc;
13}
02

実行結果

ブラウザでの表示
03

解説

疑似要素は、要素の中の「一部分」や、要素の前後に「追加する部分」を、HTMLに書かずにCSSだけで作って装飾する仕組みです。セレクタの後ろに :: を2つ付けて書きます。

上の例では、::first-letter で段落の最初の1文字だけを大きくし、::before・::after で見出しの前後に記号を追加しています。::before と ::after は content プロパティで中身を指定しないと表示されません。

疑似クラス(:hover など)は「既にある要素を条件で選ぶ」もの、疑似要素は「要素の一部分や新しい部分を作る」ものです。古い書き方では疑似要素もコロン1つ(:before)で書かれていましたが、今は区別するために :: を使います。

04

応用例・注意点

よく使う疑似要素

疑似要素説明
::before要素の中身の先頭に追加(content が必要)
::after要素の中身の末尾に追加(content が必要)
::first-letter最初の1文字
::first-line最初の1行
::markerリストの行頭記号・番号
::placeholder入力欄のプレースホルダー
::selection利用者が選択した部分

選択したときの色を変える

::selection で、文字を選択したときの背景色を変えられます。

CSS
1::selection {
2 background: #ffe3bf;
3 color: #201f1d;
4}

疑似クラスと組み合わせる

疑似クラスの後ろに疑似要素を続けられます(順番は 疑似クラス → 疑似要素)。

CSS
1.link:hover::after {
2 content: " →";
3}

注意点

  1. 011つのセレクタに書ける疑似要素は1つだけで、セレクタの最後に書きます。
  2. 02::before・::after で追加した文字は、選択やコピーができず、読み上げも環境によって異なります。重要な情報はHTMLに書きます。
  3. 03img や input など、中身を持たない要素には ::before・::after が使えません。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉