CSSの::beforeと::afterの使い方と使い所

当ページのリンクには広告が含まれています。
  • URLをコピーしました!
生徒

CSSの::before::afterの使い方がよくわかりません

先生

::before::afterでできることを説明します

この記事でわかること
  • HTMLで同じ並びの特定の要素だけにスタイルを指定する方法
  • CSSの:nth-childと:nth-last-childのいろいろな使い方
目次

::beforeと::afterについて

::before::afterはCSSの疑似要素で以下のように記述します。

See the Pen ::before::after by mik20621 (@mik20621) on CodePen.

疑似要素について

疑似要素は、HTMLの要素に追加する形でCSSに書く要素です。

HTMLには何も記述しない

疑似要素はCSSに記述して、HTMLには何も記述しません。

HTMLの内容に影響を与えずに、装飾を追加できるメリットがあります。

CSSのセレクタに付加する

疑似要素はHTMLの要素に追加するので、単体で書くのではなくCSSセレクタに付加する形で書きます。

/* セレクタの後に付加する */
p::before {
  content: "◆";
}

beforeとafterの書き方

::before::afterも他の要素と同様に、widthやborderなどのCSSのプロパティを設定できます。

See the Pen ::before::after by mik20621 (@mik20621) on CodePen.

重なり順(z-index)

::before::afterは親要素の前面に表示されます。

See the Pen ::before::after-content4 by mik20621 (@mik20621) on CodePen.

この重なり順を変えるには、z-indexプロパティを設定します。

z-indexは、positionがデフォルトのstatic以外でないと効かないです。

See the Pen ::before::after-content6 by mik20621 (@mik20621) on CodePen.

中身が無い場合 content: ""; を設定する

::before::afterの内容が何も無いとwidthheightを設定してもサイズが0になって画面に何も表示されません。

それを避けるには、背景色や枠線だけを表示したい場合、content: "";を設定するします。

See the Pen ::before::after3 by mik20621 (@mik20621) on CodePen.

::beforeと::afterの使い方

contentプロパティ

::before::afterでは、設定した値で内容を置き換えるcontentプロパティをよく使います。

contentプロパティを使って、いろいろな内容を表示できます。

文字を表示する

contentプロパティに文字を設定すると、その文字が表示されます。

See the Pen Untitled by mik20621 (@mik20621) on CodePen.

画像を表示する

contentプロパティに画像を指定

contentプロパティに画像ファイルのパスを設定すると画像を表示できます。

この場合、画像は元のサイズで表示されて、サイズを指定できません。

See the Pen ::before::after-content2 by mik20621 (@mik20621) on CodePen.

backgroundプロパティに画像を指定

backgroundプロパティで画像ファイルを背景に設定する方法でも画像を表示できます。

この場合、displayでblockやinline-blockを指定して、表示サイズを設定することができます。

背景画像も内容が無いと表示されないので、中身にタグが無い場合はcontent: "";を指定します。

See the Pen ::before::after-content2 by mik20621 (@mik20621) on CodePen.

Font AwesomeのWEBフォントを表示する

::before::afterにも、Font Awesomeのアイコンを表示できます。

Font Awesomeの利用方法

ここでは、簡単に利用できる以下のサイトのCDNを利用します。

CDNのリンクの一番上の行の、真ん中のアイコンをクリックするとFont AwesomeのCSSのlinkタグがクリップボードにコピーされます。

コピーしたlinkタグを、headタグ内に貼り付けます。

これで、このWEBページでFont Awesomeのアイコンを使用できます。

Font Awesomeの書き方

Font Awesomeを::beforeや::afterで使うには、contentfont-familyを以下のように指定します。

Font Awesome 6の場合

セレクタ::before {
  font-family: "Font Awesome 6 Free";  /* Font Awesome 6 無料版のフォント名 */
  content: '\????';  /* ????はFont AwesomeのアイコンのUnicodeを書く */
  font: var(--fa-font-solid);
}

Font Awesome 5の場合

セレクタ::before {
  font-family: "Font Awesome 5 Free";  /* Font Awesome 5 無料版のフォント名 */
  content: '\????'; /* ????はFont AwesomeのアイコンのUnicodeを書く */
  font-weight: 900; /* これを書かないとアイコンが表示されない */
}

TwitterなどBrandsのアイコンの場合は、書く内容が少し異なります。

See the Pen ::before::after-content7 by mik20621 (@mik20621) on CodePen.

contentに書くUnicodeについて

content\(バックスラッシュ)の後に続けるUnicodeは以下の場所で確認します。

Font Awesomeのサイト上部にあるIconsのリンクをクリックします。

使用するアイコンを選択して、上部のUnicodeをクリックするとクリップボードにコピーされます。

::beforeと::afterの使い所

要素を前後で挟む

要素の前後に::before::afterの疑似要素を表示して挟みます。

See the Pen ::before::after4 by mik20621 (@mik20621) on CodePen.

先頭にアイコンや画像を表示

::before::afterで要素の先頭にアイコン画像などを表示します。

See the Pen ::before::after-content7 by mik20621 (@mik20621) on CodePen.

ふきだしを表示

::before::afterで三角形を描いて、位置を調整することでふきだしを表現できます。

See the Pen bubble-clip by mik20621 (@mik20621) on CodePen.

矢印を表示

::before::afterで枠線を描いて、角度を変えると矢印を描けます。

See the Pen ::before::after-content9 by mik20621 (@mik20621) on CodePen.

フロー図を表示

リスト要素の間に::before::afterで図形や画像を表示して、フロー図を表示する。

See the Pen ::before::after-content10 by mik20621 (@mik20621) on CodePen.

背景を重ねる

::before::afterに背景を設定することで、重ね合った背景を表示できます。

See the Pen ::before::after-flow by mik20621 (@mik20621) on CodePen.

よかったらシェアしてね!
  • URLをコピーしました!
目次