Web制作で必ず使用する擬似要素について解説していきます。
擬似要素の使い方を理解することで、CSSでのスタイリング(装飾)する表現の幅が広がるので必ずマスターできるようにしていきましょう!
- 擬似要素とは何か
- 擬似要素の書き方
- 主な擬似要素の種類
- 擬似要素の使いどころ
擬似要素とは
擬似要素を一言で表すと「CSSのみで、指定した要素に装飾が行えるモノ」です。
デモを見てみましょう。
擬似要素を使わない場合
See the Pen 擬似要素の導入デモ - 擬似要素を使わない場合 by ZeroPlus (@zeroplus-programming) on CodePen.
HTMLに着目してください。
擬似要素を使わない場合、装飾をするには.title-lv2-deco
や.desc-deco
のようにspanタグを作成して、HTMLを書き加える必要があります。
それを踏まえて、次に擬似要素を使った場合をみてみましょう。
擬似要素を使った場合
See the Pen 擬似要素の導入デモ - 擬似要素を使った場合 by ZeroPlus (@zeroplus-programming) on CodePen.
擬似要素を使うと、デモのように構造的な意味を持っている、必要最小限のHTMLのみで装飾をつけることができます。
HTMLは本来、コンテンツの構造を作るための言語ですので、装飾用のタグは最小限が望ましいです。そんな時に使えるのが今回扱う「擬似要素」です。
擬似要素の種類
擬似要素にはいくつかの種類がありますが、今回は中でもまずは押さえておきたい次の2つから紹介いたします。
擬似要素 | できること |
---|---|
::before | 指定した要素の最初の子要素として、擬似要素を作れます |
::after | 指定した要素の最後の子要素として、擬似要素を作れます |
::before, ::after
指定した要素の子要素として擬似要素を作れます。
次のように記述すると、擬似要素を作ることができます。
.selector::before {
content: '';
/* その他、擬似要素に適応させたいスタイルを記述 */
}
.selector::after {
content: '';
/* その他、擬似要素に適応させたいスタイルを記述 */
}
content: ' ' ;
がないと、擬似要素として作られないので注意しましょう。
作成したい擬似要素に文字を含まない場合は空で問題ありません。
また、::before
と ::after
には主に、「そのまま配置する方法」と「positionプロパティを用いる方法」の2種類の使い方があります。
それぞれ見ていきます。
そのまま配置する方法
See the Pen ::before, ::after使い方解説 - そのまま配置する方法 by ZeroPlus (@zeroplus-programming) on CodePen.
指定した要素の子要素として、::before
が最初、::after
が最後に生成されるので、このデモでは「HTMLにある要素本体」という文字をはさむ形で作られています。
positionプロパティを用いる方法
See the Pen ::before, ::after使い方解説 - positionプロパティを用いる方法 by ZeroPlus (@zeroplus-programming) on CodePen.
最初は【そのまま配置する方法】と同じ位置に作られるのですが、position
を使うことで自由に置くことができます。
装飾として::before
, ::after
を使う場合は、こちらの使い方をする方が多いです。
1つの要素に対して、::before
と::after
それぞれ1つずつしか指定ができないので、注意が必要です。
その他の擬似要素の種類
最もよく使用するのは::before
と::after
ですが、今回はそのほかにも2種類紹介したいと思います。
擬似要素 | できること |
---|---|
::first-line | 指定した要素の最初の行に、限定的にスタイルを当てることができます |
::first-letter | 指定した要素の最初の文字に、限定的にスタイルを当てることができます |
::first-line
指定したブロックレベル要素の最初の行に、限定的にスタイルを当てることができます。
See the Pen ::first-lineの使い方解説 by ZeroPlus (@zeroplus-programming) on CodePen.
::first-letter
指定したブロックレベル要素の最初の文字に、限定的にスタイルを当てることができます。
See the Pen ::first-letterの使い方解説 by ZeroPlus (@zeroplus-programming) on CodePen.
どちらも、インライン要素に対しては効果がないので、使用する時は注意しましょう。
装飾を擬似要素で作らない方がいいケース
冒頭では、「装飾をするときは、装飾用のHTMLタグは最小限が望ましい」という話をしました。
ですが、中にはHTMLタグを使って装飾を作った方がいい場合もあります。
装飾を作るときに、::before
と::after
で擬似要素を作る場合と、HTMLでタグを作って要素を作る場合の使い分けについて説明します。
結論として「内容に関わる重要なコンテンツはHTMLタグを使う」ようにしましょう。
なぜなら、検索をかけたときに擬似要素によって作られたコンテンツは認識されないからです。
例えば、タイトルの装飾文字だったり、記事についている「新着」のラベルなどは、検索される可能性があるので、擬似要素で作ることが望ましくない場合があります。そのため、::before
や ::after
を使ってコンテンツを作る際は注意しましょう。
擬似要素の実例
最後に、擬似要素の実際の使用例を紹介します。
ボタンの矢印
See the Pen 擬似要素の実例01 by ZeroPlus (@zeroplus-programming) on CodePen.
こちらは、ボタンの矢印を擬似要素で作っています。
アニメーション用の背景
See the Pen 擬似要素の実例02 by ZeroPlus (@zeroplus-programming) on CodePen.
ボタンにホバーすると、白い背景がスライドしてきます。その白い背景を擬似要素で作っています。
まとめ
以上が、擬似要素の説明となります。
- 擬似要素はCSS側のみの記述で要素を作って装飾をおこなえるもの
- セレクタの後に、
::before
などと記述する content
プロパティは必須position
を使用することで、指定した要素を基準に自由に配置可能
という点を最低限覚えておきましょう!
慣れるまでは小難しく感じてしまうかもしれませんが、使っていくうちにとても便利な手法となってきます。ぜひ、使ってみてください。