今回は要素に対して装飾を行いたい場合にとても便利な疑似要素について解説いたします。
疑似要素という言葉を聞いたことがない方や、言葉は知ってるけどいまいち使い方がわからないといった方はぜひ読んでいただけると幸いです。
疑似要素とは
疑似要素とはCSSの記載で、あたかもHTML要素があるようなふるまいを持たせるCSSの記述方法です。
疑似クラスと呼ばれるものがありますが、これはまた別物で疑似要素が使用できると、HTML要素を記載しなくてもちょっとした装飾ができるなど便利なことがたくさんあります。
HTML要素を記載して、CSSのプロパティを記載しても同様のことは可能ですが、HTMLのコード量が増えてしまうため、可能であれば疑似要素を使いこなしていきたいですね!
疑似要素の使用方法につきましては以下をご覧いただけますと幸いです。
疑似要素の書き方について
疑似要素は主に2つ存在し、beforeとafterがあります。
※厳密にいえばほかにもありますが、頻繁に使用するためこちらの2つをご紹介いたします。
before
<p class="text">疑似要素の書き方</p>
<style>
.text {
color: #555;
font-size: 24px;
}
.text::before {
content: '★';
}
</style>
セレクタに対して::beforeの指定を行います。contentプロパティは必須となっており、値はシングルクォーテーションで囲む必要があります。
上記の場合は先頭に★を入れております。
検証ツールで見ると、ピンクの文字で::beforeが表示されていることがわかります。
CSSの指定ではコロン「:」を2つ付けて記述します。「::before」
現在のCSS3のバージョンでは2つ付けることが推奨されており、以前のバージョン(CSS2)ではコロンは1つでした。
コロンが1つだと疑似クラスと見分けが付きにくくなってしまうため、疑似要素を記載する際にはコロンは2つ記載するようにしましょう!
after
<p class="text">疑似要素の書き方</p>
<style>
.text {
color: #555;
font-size: 24px;
}
.text::after {
content: '★';
color: red;
}
</style>
セレクタに対して::afterの指定を行います。beforeと同様にcontentプロパティは必須となります。
afterの場合は後ろに要素が追加されます。
検証ツールで見ると、ピンクの文字で::afterが表示されていることがわかります。
疑似要素を装飾として使用するケース
上記の例では文字をcontentプロパティの値で記載し、表示しておりましたが、値をあえていれないようにすることも可能です。
以下の例をご覧ください。
<style>
.text {
color: #555;
font-size: 32px;
text-align: center;
font-weight: bold;
letter-spacing: 1px;
}
.text::after {
content: '';
display: block;
width: 2px;
height: 24px;
background-color: #555;
margin: .5em auto;
}
</style>
contentプロパティでは何も指定せず、装飾として使用しております。
疑似要素で縦線を作成しております。
疑似要素の注意点として、初期状態ではインライン要素となってしまうため、上記のように使用するためにはブロック要素に変更する必要があります。「display: block;」
また、ブロック要素にしているため、marginプロパティの左右の値をautoにすることで真ん中寄せにしております。
このように、疑似要素ではちょっとした装飾を加える際に、CSSだけで実現できるためとても便利です。
疑似要素の注意点
疑似要素が表示されない!?
疑似要素はcontentプロパティの記載が必須です!
装飾として使用する場合は、content: ”; で何も指定しませんが、この指定は必須となります。
もし疑似要素が画面に表示されない場合は、contentプロパティを記載しているか確認してみましょう!
“content”を空白にする場合に気を付けること
contentプロパティを空白にする場合は、heightを指定する必要があります。これはcontentが空の状態のため、高さが確保できていないためです。
さらに初期状態では疑似要素はインライン要素のため、ブロック要素に変更する必要があります。
インライン要素とブロック要素の違いがわからないといった方は下記記事にて解説しております!
ぜひご覧になってください。
疑似要素は一度に複数指定できない?
::beforeと::afterは要素毎に1回ずつしか使用できません。装飾を増やしたい場合に足りない場合はdiv要素などを増やして対応しましょう。
::before::beforeのような記載はできません。
さいごに
疑似要素について解説させていただきました。
使いこなすとHTMLを増やすことなくデザインすることができるため、とても便利です。
ちょっとした線を入れたいといった場合も、疑似要素を使用すると簡単に実現できるため、ぜひ覚えていきましょう!