CSSの::before・::afterの疑似要素が効かない場合の対処法!
CSSの::before・::afterの疑似要素が効かない場合の原因と対処法についてサンプルコード付きで解説します。contentプロパティがなかったり、positionの指定が間違っているなどいくつかの失敗パターンを紹介します。
CSSの::before・::afterの疑似要素が効かない
CSSの::before
・::after
の疑似要素はCSS側で文字を付加したり、コンテンツを付け足したり出来、かなり重宝するテクニックです。
しかし、よくあるのがCSSの::before
・::after
の疑似要素をちゃんと設定しているのにそれが効かず表示されないという問題です。
そこで今回はCSSの::before
・::after
の疑似要素が効かない場合の原因と対処法について解説します。
CSSの::before・::afterの疑似要素が効かない場合の対処法
いくつか原因が考えられますので、順番に紹介していきます。
contentプロパティの指定が無い
::before
・::after
の疑似要素が効かない原因で一番多いのがcontent
プロパティの指定が無いという問題です。
疑似要素で指定したい部分にテキストがあろうがなかろうがcontent
プロパティは設定するようにしましょう。そうではないと疑似要素が表示されません。
上記のサンプルコードではcontent
プロパティが無い場合では::before
の疑似要素は表示されず、ある場合は::before
の疑似要素が表示さているのが確認出来ます。
必ずcontent
プロパティを設定するようにしましょう。
contentが空なのにdisplay指定やサイズ指定が無い
content
プロパティを空文字で設定すると、もちろんテキストは表示されません。その代わりに背景色を付けたボックスを表示したかったり領域をとりあえず確保したい用途で使われますがその場合にはdisplay
プロパティの指定とwidth
とheight
を付けてサイズ指定しましょう。
上記のサンプルコードではdisplay
プロパティとwidth
、height
プロパティの指定が無い方はcontent
プロパティを設定していても何も表示されません。
一方でdisplay
プロパティとwidth
、height
プロパティの指定がある方はちゃんと::before
疑似要素が表示されています。
positionの指定を間違えている
::before
・::after
疑似要素とcontent
プロパティと共によくposition
プロパティが利用されます。position
プロパティで疑似要素の表示位置を調整するために利用されます。
このposition
プロパティが必要なところになかったり、設定を間違えていると疑似要素は正しく表示されません。
上記のサンプルコードでは「テスト」のテキストの下に青い四角を疑似要素で表示しようとしています。
前者ではposition:relative
が.sample-1
にされていないため、absoluteで指定した疑似要素が正しく表示されていません。
後者はposition: relative
を設定しているため、正しく表示できています。
CSSの文法ミス
CSSで全角文字を入力していたり、記号を間違えている場合など文法ミスで疑似要素が正しく表示されていない事があります。
下記のサービスからCSSの文法チェックが出来ますので、一度文法ミスが無いかチェックしてみましょう。
