CSSのbefore疑似要素・after疑似要素の応用例&コードまとめ

CSSには色々な疑似要素とか疑似クラスがあります。

その中でも使いやすいのが after疑似要素before疑似要素 の2つ

どちらも汎用性が高くて、色々な使い方ができて面白いです。

ということで after疑似要素・before疑似要素の応用例&コード例をまとめてみました。

初めに after ・ before について少し解説

まず初めに、after疑似要素とbefore疑似要素について少しだけ紹介

別に知ってる人はいいんですが、そうじゃない人もいるはずなので解説します。

 

例えば次みたいな要素があるとしましょう。

この要素の前とか後ろに要素追加したい場合
一番手っ取り早いのは、直に要素タグを追加することです。

ただし・・・次の場合だと手動でのタグ追加が難しい場合もあります。

  • 任意のクラスに要素追加したい場合
  • 要素追加したい要素が大量にある場合

こういう大量かつ機械的に要素を追加したいときに役立つのが疑似要素ってやつです。

 

例えば上で例に挙げた hogehoge  というIDを持つ要素

この前に要素を追加するには次CSSみたく before疑似要素 を使えばOK

上コードの #hogehoge::before のように、 ::before  という疑似要素を適用してあげればいいだけです。

ただし、before疑似要素には必ず contentプロパティ が必要なので要注意。これを指定してあげないと何も表示されません。

ちなみに、テキストを含まない要素だとしても content: ""; みたいに形だけでも contentプロパティ を指定しておく必要があります。

 

そしてbefore疑似要素とは逆に、要素の後に追加することも可能です。

追加するには after疑似要素 を追加すればいいだけ(次CSS参照)

まあさっきの ::before::after  に置き換えただけですが・・・

前に置くか、後に置くかの違いだけで、基本的にはどっちも使い方は同じです。

 

以上が before疑似要素 & after疑似要素についての簡単な説明

ではこの2つを使った応用例について次に色々紹介していきます。

after・before疑似要素の応用例&コード例

応用例1.要素内側に枠線を引く

要素の外側じゃなくて、内側に枠線を引きたくなることってないですか?

そういう時に疑似要素が結構役立ちます。

 

例えば簡単なコード例を載せるとすると次の通り

上コードは example  というクラスを持つ要素内部に枠線を引くCSS

大事なのは元要素に position: relative; を指定、疑似要素に position: absolute;  を指定することですね。

それ以外は細かな位置調整とか枠線指定してるだけなので、難しくはありません。

 

ちなみに、どういう枠線が引かれるかは次画像参照

要素内のテキストが枠線に被ってるのが分かりますか?

このように要素全体を覆う形で、枠線が引かれます。

 

もちろん、要素内側に枠線を引く方法は、これ以外にもあります。

詳しくは次記事でまとめたのでチェック(コード例あり)

一言で「枠線を引く」と言っても、用途に応じて色々な引き方を知っておくと便利です。

応用例2.外部リンクにアイコンを付与する

例えば外部リンクとか別タブで開くリンクを作る場合・・・

次みたいにアイコン表示されてると親切です。

「別タブで開く」アイコンを付けたリンクの例

こういう風にリンクにアイコン付与することも、疑似要素を使えば簡単にできます。

 

例えば次がリンク付与する簡単なコード例(FontAwesome使用)

上のCSSでは target="_blank"  を持つリンク要素にだけアイコン付与しています。

また content: '\f360'; のように指定することで、別タブで開くマーク( << こんなの)が付与されます。大きさとか色はお好みで変更すればOK

 

ただし FontAwesome を使ってるので、そのままコピペしても表示されません。

その詳しい導入手順・表示方法については次記事をチェック

jQueryを使って動的にリンクアイコンを表示する方法も解説してあります。

もし疑似要素を使わずにアイコン表示するとなると、結構大変かもしれません。

その無駄な手間とか減らせるのも after疑似要素 ・ before疑似要素 を使う利点ですね。

ここまでのまとめ

以上、CSSのafter疑似用と&before疑似要素の応用例でした。

上手く活用すれば、短いコードで色々な応用ができるはずです。ではでは(^_^)/~