【CSSセレクタ】E:before
『セレクタ:before』で、要素の最初の子要素を生成でき、こちらは一般に『:before擬似要素』と呼ばれます。IE7以下のブラウザでは動きません。
『:before擬似要素』を生成する場合は、『content』プロパティの指定が必須となり、『content』プロパティに指定がない場合は『:before擬似要素』の生成はされません。何も文字列を含まない『:before擬似要素』を生成したい場合は『content』プロパティの値に空文字列を渡してあげればOKです。
サンプルコード
style.css
/* テキストを先頭に追加 */
div:before { content: "Hello World";}
/* contentが指定されていないと生成されない(要注意) */
p:before {}
/* 空文字列で装飾用の擬似要素を生成 */
div.div1:before { content: ""; display: block; height: 10px; background-color: red;}
/* アイコン文字を要素の前に追加する実践例 */
.icon-check:before { content: "✓ "; color: #00aa55;}
.icon-warning:before { content: "⚠ "; color: #ff6600;}
/* 見出しの前に装飾を追加する実践例 */
h3.label:before {
content: "POINT";
display: inline-block;
background-color: #0077cc;
color: white;
font-size: 0.75em;
padding: 2px 6px;
border-radius: 3px;
margin-right: 8px;
}
/* リンクの前に「▶ 」を追加する */
a.nav-link:before { content: "▶ ";}
/* 引用符を自動で追加する */
q:before { content: "「";}
q:after { content: "」";}
ブラウザでの表示結果
div:before { content: "Hello World";} /* Hello Worldという文字列を含んだ『:before擬似要素』を生成します。 */
p:before {} /* 『content』プロパティが指定されていないので『:before擬似要素』は生成されません。 */
div.div1:before { content: ""; display: block; height: 10px; background-color: red;} /* 何も文字列を出力しない場合はこのように空文字列を渡してあげてください。 */
<div> 『:before擬似要素』が生成されてます。</div> <p>『content』プロパティの指定がないため『:before擬似要素』が生成されていません。</p> <div class="div1">『:before擬似要素』で赤いラインを生成しています。</div>
『:before擬似要素』のデフォルトの『display』プロパティの値は『inline』となります。
尚、『:before擬似要素』が生成される場所は指定された要素の前ではなく、指定された要素の中の最初の子要素の位置となりますのでご注意ください。
<!-- ここではありません --> <p> <!-- この辺に『:before擬似要素』が生成されます。 --> </p>
対応ブラウザ
デスクトップ
3 以前 ×
8 △
7 ×
6 ×
6 △
5 △
4 △↑ 『:before』として対応
3 以前 ×モバイル
2 以前 ×
Android Browser
4.4 以降 ○
3 以前 ×デスクトップ版と同等の対応です
デスクトップ版と同等の対応です
※ バージョン情報は MDN に基づいています。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。