Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】CSS Pseudo-Elements: Enhance Your Projects with Style!

2025年09月30日に「Dev.to」が公開したITニュース「CSS Pseudo-Elements: Enhance Your Projects with Style!」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

CSS疑似要素は、HTMLを変更せずに要素へスタイルやコンテンツを追加する機能だ。特に`::before`や`::after`は、Webページの見た目を簡単に調整でき、コードをきれいに保てる。記事では、JavaScript版パックマンのゴーストの目をこれで作成し、動きに合わせて目の向きを変える工夫を紹介している。

ITニュース解説

CSS擬似要素は、ウェブサイトのデザインを向上させるための強力な機能である。これは、HTMLの構造(骨組み)に手を加えることなく、特定の要素にスタイルを適用したり、新しいコンテンツを挿入したりすることを可能にする。システムエンジニアを目指す初心者にとって、この概念を理解し活用することは、よりクリーンで保守性の高いコードを書く上で非常に役立つ技術だ。

擬似要素の最も一般的な例は、::before::afterである。これらは、既存のHTML要素の「前」または「後」に仮想的なコンテンツを挿入するために使われる。たとえば、アイコンや装飾的な図形などを、HTMLに余分なdivタグなどを追加することなく実現できる。挿入されるコンテンツは、contentプロパティを使って指定される。このプロパティが空の場合でも、擬似要素自体は作成され、スタイルを適用できる箱として機能する。

その他にも、様々な用途を持つ擬似要素が存在する。例えば、::first-lineは、ブロックレベル要素(段落など)の最初の行だけにスタイルを適用する。::first-letterは、同様に要素の最初の文字だけを特別に装飾する際に使用される。ユーザーがテキストを選択した際に表示されるスタイルを変更したい場合は::selectionを、入力フォームのプレースホルダーテキストの見た目を調整したい場合は::placeholderを用いる。また、箇条書きリストの点や数字といったマーカー部分をスタイリングするには::markerが利用できる。

擬似要素の大きな利点は、HTMLをシンプルで意味論的に正しい状態に保てることにある。デザイン上の都合で装飾が必要な場合でも、それ専用のHTML要素を追加する必要がなくなるため、コードが読みやすくなり、将来的なメンテナンスも容易になる。しかし、擬似要素を利用する上で重要な注意点がある。それは、これらがウェブページのコンテンツ構造であるDOM(Document Object Model)の一部として扱われないことだ。そのため、JavaScriptから直接擬似要素を操作したり、イベントリスナーを設定したりすることはできない。もし擬似要素のスタイルを動的に変更したい場合は、その擬似要素が属する親要素のスタイルをJavaScriptで変更するか、CSSのルール自体をJavaScriptで動的に追加・削除するといった間接的な方法を取る必要がある。

この概念の具体的な応用例として、JavaScriptで作られたパックマンゲームのゴーストの目は、CSS擬似要素を使い実装された。このゲームでは、ゴーストの動きに合わせて目の向きを変えることで、よりリアルな表現を実現している。

まず、ゴースト本体の基本的なスタイルが定義されたCSSクラスが作成される。このクラスでは、background-colorを黒にし、border-top-left-radiusborder-top-right-radiusプロパティを使って上部を丸い形状にする。さらに、clip-pathプロパティを活用して、ゴーストの下部を特徴的なギザギザの形に加工している。また、目の位置を正確に決めるために、position: relativeを設定し、このゴースト要素を基準にして子要素を配置できるようにしている。

次に、ゴーストの左右の目をそれぞれ::before::after擬似要素を使って作成する。左目は::beforeで、右目は::afterで定義される。どちらの目も、白い太いborderと黒いbackground-colorを持ち、border-radius: 50%を設定することで円形にしている。content: ""は擬似要素がコンテンツを持つことを示すために必須だが、今回は中身がないため空にしている。これらの目はposition: absoluteを使って、ゴースト本体に対して絶対的な位置に配置される。bottomプロパティで下からの距離を、marginプロパティで左右の余白を調整することで、左右の目がゴーストの顔の中で適切な位置に収まり、ゴーストの体の中に位置し浮いているような見た目を実現している。

ゴーストの色を変えるために、赤、ピンク、青、オレンジなどの各色に対応する独立したCSSクラスが用意されている。これらの色クラスを、先に定義したゴースト本体のクラスと組み合わせることで、様々な色のゴーストを簡単に表示できる仕組みだ。

さらに、ゴーストが「怖がっている」状態を表現するためのscaredクラスも用意されている。このクラスがゴーストに適用されると、ゴーストのbackground-colorが青に変わり、同時に::before::after擬似要素(つまりゴーストの目)のbackground-colorも白に変化する。これにより、ゴーストが普段とは違う、怖がっている様子を視覚的に伝えることが可能になる。

ゲーム内でゴーストが移動する際には、JavaScriptがその移動方向を検知し、それに応じてゴーストの目の向きを制御する。これは、ゴーストの現在の目の向きを示すCSSクラス(例えば、左向きならghost-look-left)をJavaScriptで削除し、新しい移動方向に対応するクラスを動的に追加することで実現される。例えば、ゴーストが上方向に移動する場合、ghost-look-upといったクラスが適用され、目の位置が微調整されることで、ゴーストが上を見ているような錯覚を与える。このように、JavaScriptは擬似要素のスタイルを直接変更するのではなく、擬似要素の見た目を定義するCSSクラスを切り替えるという形で間接的に連携している。

結論として、CSS擬似要素は、HTML構造をシンプルかつ意味論的に保ちながら、ウェブデザインに複雑な視覚効果や装飾を追加するための非常に効果的なツールである。パックマンゲームの例に見られるように、装飾的な目の作成から、JavaScriptと連携して動的な見た目の変化を実現することまで、その可能性は幅広い。擬似要素を深く理解し、適切に活用することは、保守性の高い、パフォーマンスに優れ、そしてユーザー体験を向上させる創造的なウェブサイトやアプリケーションを構築するための重要なスキルとなる。これらのスキルは、システムエンジニアとして高品質なウェブ開発を行う上で不可欠な要素である。

関連コンテンツ

関連IT用語