はじめに
Webサイトを閲覧していると、文字のサイズや色、背景のデザイン、要素の配置など、見た目の美しさに目を奪われることがあります。これらのスタイリングを担当しているのがCSSです。
CSSは、HTMLで記述されたWebページの「見た目」を定義するためのスタイルシート言語です。HTMLがWebページの構造と内容を決めるのに対し、CSSはその構造をどのように表示するかを指定します。
本記事では、CSSをこれから学び始める方に向けて、以下の内容を解説します。
- CSSとは何か、その役割と歴史
- HTMLとCSSの関係性
- CSSの3つの記述方法(インライン・内部・外部スタイルシート)
- CSSの基本構文(セレクタ・プロパティ・値)
- 外部スタイルシートを使った実践的なスタイル適用
CSSとは何か
CSSの定義と役割
CSSは「Cascading Style Sheets」の略称で、Webページの見た目を制御するためのスタイルシート言語です。W3C(World Wide Web Consortium)が策定する標準仕様に基づいており、すべての主要なWebブラウザでサポートされています。
MDN Web Docsでは、CSSを次のように定義しています。
CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)は、HTML や XML で書かれた文書の表示方法を記述するためのスタイルシート言語です。
CSSの「Cascading(カスケーディング)」とは「滝のように流れ落ちる」という意味で、複数のスタイル定義が段階的に適用される仕組みを表しています。この仕組みにより、同じ要素に対して複数のスタイルが定義された場合でも、優先順位に従って最終的なスタイルが決定されます。
HTMLとCSSの関係
HTML、CSS、JavaScriptの3つは、現代のWeb開発において欠かせない基盤技術です。それぞれの役割は明確に分かれています。
graph LR
A[HTML] -->|構造| D[Webページ]
B[CSS] -->|装飾| D
C[JavaScript] -->|動作| D
style A fill:#e34c26,color:#fff
style B fill:#264de4,color:#fff
style C fill:#f7df1e,color:#000
style D fill:#6c757d,color:#fff| 技術 | 役割 | 具体例 |
|---|---|---|
| HTML | 構造・内容 | 見出し、段落、リンク、画像の配置 |
| CSS | 装飾・スタイル | 色、フォント、余白、レイアウト |
| JavaScript | 動作・振る舞い | クリック処理、アニメーション、データ取得 |
この役割分担により、HTMLファイルを修正せずにCSSだけを変更することで、Webサイト全体のデザインを一括で更新できます。これを「構造と表現の分離」と呼び、保守性と再利用性を高める設計原則として広く採用されています。
CSSの歴史と進化
CSSは1996年にW3Cによって最初の仕様「CSS1」が勧告されました。以来、Web技術の進化とともにCSSも大きく発展してきました。
| バージョン | 勧告年 | 主な特徴 |
|---|---|---|
| CSS1 | 1996年 | フォント、色、余白など基本的なスタイル |
| CSS2 | 1998年 | 位置指定(position)、メディアタイプ |
| CSS2.1 | 2011年 | CSS2の仕様を整理・修正 |
| CSS3 | 2011年〜 | モジュール化、Flexbox、Grid、アニメーション |
CSS3以降は、機能ごとに「モジュール」として仕様が策定されるようになりました。これにより、ブラウザベンダーは個別のモジュールを段階的に実装でき、新機能の導入がスムーズになっています。
現在では、FlexboxやCSS Gridといったレイアウト手法、カスタムプロパティ(CSS変数)、コンテナクエリなど、高度な機能がモダンブラウザで利用可能です。
CSSの3つの記述方法
CSSをHTMLに適用するには、3つの方法があります。それぞれの特徴と使い分けを理解しましょう。
インラインスタイル
HTMLタグのstyle属性に直接CSSを記述する方法です。
|
|
メリット
- 特定の要素にだけスタイルを適用したい場合に便利
- JavaScriptから動的にスタイルを変更する際に使用
デメリット
- HTMLとCSSが混在し、コードの可読性が低下する
- 同じスタイルを複数の要素に適用する場合、コードが重複する
- スタイルの一括変更が困難
インラインスタイルは、一時的なテストやJavaScriptによる動的なスタイル変更以外では、使用を避けることが推奨されます。
内部スタイルシート(埋め込み)
HTMLドキュメントの<head>セクション内に<style>タグを使用してCSSを記述する方法です。
|
|
メリット
- 1つのHTMLファイル内でスタイルを完結できる
- 外部ファイルへのHTTPリクエストが不要
デメリット
- 複数ページで同じスタイルを使う場合、各ページに同じCSSを記述する必要がある
- ブラウザのキャッシュが効かず、ページ読み込みのたびにCSSを取得する
内部スタイルシートは、単一ページのWebサイトや、プロトタイプの作成時に使用されることがあります。
外部スタイルシート
CSSを別ファイル(.cssファイル)として作成し、HTMLから<link>タグで読み込む方法です。実務ではこの方法が最も推奨されます。
CSSファイル(style.css)
|
|
HTMLファイル(index.html)
|
|
メリット
- 複数のHTMLファイルで同じCSSを共有できる
- CSSファイルがブラウザにキャッシュされ、ページ読み込みが高速化する
- HTMLとCSSの分離により、保守性と可読性が向上する
- チーム開発でHTMLとCSSの作業を分担しやすい
デメリット
- 初回アクセス時に外部ファイルへのHTTPリクエストが発生する
外部スタイルシートは、実務で最も使用される方法です。特に複数ページで構成されるWebサイトでは、スタイルの一元管理と再利用性の観点から、外部スタイルシートを使用することが標準的なベストプラクティスとなっています。
3つの方法の使い分け
| 方法 | 推奨される場面 | 実務での使用頻度 |
|---|---|---|
| インラインスタイル | 動的なスタイル変更、一時的なテスト | 低 |
| 内部スタイルシート | 単一ページ、プロトタイプ | 低 |
| 外部スタイルシート | 複数ページ構成のWebサイト | 高(推奨) |
CSSの基本構文
CSSは「セレクタ」「プロパティ」「値」の3つの要素で構成されます。この基本構文を理解することが、CSS習得の第一歩です。
CSSルールの構造
CSSの記述単位を「ルール」または「ルールセット」と呼びます。1つのルールは次の構造を持ちます。
graph LR
A[セレクタ] --> B[宣言ブロック]
B --> C[プロパティ: 値;]
B --> D[プロパティ: 値;]
style A fill:#4285f4,color:#fff
style B fill:#34a853,color:#fff
style C fill:#fbbc04,color:#000
style D fill:#fbbc04,color:#000
|
|
具体例を見てみましょう。
|
|
| 要素 | 説明 | 上記例での値 |
|---|---|---|
| セレクタ | スタイルを適用する対象を指定 | h1 |
| プロパティ | 変更するスタイルの種類 | color、font-size、margin-bottom |
| 値 | プロパティに設定する具体的な値 | navy、24px、20px |
セレクタの種類
セレクタは、どのHTML要素にスタイルを適用するかを指定します。基本的なセレクタには以下の種類があります。
要素セレクタ(タイプセレクタ)
HTMLタグ名をそのまま指定します。
|
|
クラスセレクタ
HTMLのclass属性に指定した値を使用します。セレクタの先頭にピリオド(.)を付けます。
|
|
|
|
クラスセレクタは、複数の要素に同じスタイルを適用する場合に最も使用される方法です。
IDセレクタ
HTMLのid属性に指定した値を使用します。セレクタの先頭にシャープ(#)を付けます。
|
|
|
|
IDセレクタは詳細度(優先度)が高いため、スタイルの上書きが困難になることがあります。レイアウトの大枠を定義する場合や、JavaScriptからの参照に使用することが多いです。
ユニバーサルセレクタ
すべての要素に適用するセレクタです。アスタリスク(*)を使用します。
|
|
リセットCSSやノーマライズCSSでよく使用されます。
プロパティと値
CSSには数百種類のプロパティが存在します。よく使用される基本的なプロパティを紹介します。
テキスト関連のプロパティ
|
|
背景関連のプロパティ
|
|
ボックスモデル関連のプロパティ
|
|
値の単位
CSSで使用する値には、さまざまな単位があります。
| 単位 | 種類 | 説明 | 使用例 |
|---|---|---|---|
px |
絶対単位 | ピクセル(画面上の1点) | font-size: 16px; |
em |
相対単位 | 親要素のフォントサイズを基準 | margin: 1.5em; |
rem |
相対単位 | ルート要素(html)のフォントサイズを基準 | font-size: 1rem; |
% |
相対単位 | 親要素のサイズを基準とした割合 | width: 50%; |
vw |
相対単位 | ビューポート幅の1% | width: 100vw; |
vh |
相対単位 | ビューポート高さの1% | height: 100vh; |
レスポンシブデザインを実現するためには、remや%、vw/vhなどの相対単位を適切に使い分けることが重要です。
コメントの書き方
CSSファイル内にコメントを記述するには、/*と*/で囲みます。
|
|
コメントを活用することで、CSSの意図や構造を明確にし、チームでの開発や将来のメンテナンスを容易にします。
実践:外部スタイルシートでWebページをスタイリングする
ここまで学んだ知識を活かして、実際に外部スタイルシートを使ってWebページをスタイリングしてみましょう。
実行環境
- テキストエディタ(VS Code推奨)
- Webブラウザ(Chrome、Firefox、Edge、Safariなど)
前提条件
- HTMLの基本的なタグ構造を理解していること
- ファイルの作成と保存ができること
ファイル構成
以下の2つのファイルを同じフォルダ内に作成します。
project/
├── index.html
└── style.css
HTMLファイルの作成
index.html
|
|
CSSファイルの作成
style.css
|
|
期待される結果
ブラウザでindex.htmlを開くと、以下のようなスタイルが適用されたページが表示されます。
- 青色(#264de4)のヘッダーに白文字でタイトルが表示される
- コンテンツエリアは中央揃えで、最大幅800pxに制限される
- 各セクションは白背景のカードデザインで、影が付いている
- 見出しには青色の下線が引かれている
- リスト項目の前に青い丸印が表示される
- フッターは濃いグレーの背景に白文字で表示される
CSSを学ぶ上での注意点
ブラウザ間の差異
CSSは主要なブラウザでサポートされていますが、新しいプロパティや値は古いブラウザでは動作しないことがあります。Can I use(https://caniuse.com/)で、使用したいCSSプロパティのブラウザサポート状況を確認することをおすすめします。
デベロッパーツールの活用
ブラウザのデベロッパーツール(Chrome DevTools、Firefox Developer Toolsなど)を使うと、適用されているCSSを確認したり、リアルタイムで値を変更してプレビューしたりできます。CSSのデバッグには欠かせないツールです。
Chrome DevToolsを開くには、以下の方法があります。
- Windowsの場合:
F12キーまたはCtrl + Shift + I - Macの場合:
Cmd + Option + I
CSSの学習ロードマップ
CSSの基本を理解したら、次のステップとして以下のトピックを学ぶことをおすすめします。
- セレクタの詳細:子孫セレクタ、隣接セレクタ、疑似クラス、疑似要素
- 詳細度とカスケード:スタイルの優先順位を理解する
- ボックスモデル:margin、padding、borderの仕組み
- Flexbox:柔軟な1次元レイアウト
- CSS Grid:強力な2次元レイアウト
- レスポンシブデザイン:メディアクエリを使った画面サイズ対応
まとめ
本記事では、CSSの基礎について以下の内容を解説しました。
- CSSは「Cascading Style Sheets」の略で、Webページの見た目を制御するスタイルシート言語
- HTMLが構造、CSSが装飾、JavaScriptが動作を担当するという役割分担
- CSSの記述方法は3種類(インライン・内部・外部スタイルシート)あり、外部スタイルシートが推奨される
- CSSの基本構文は「セレクタ { プロパティ: 値; }」という形式
- セレクタには要素セレクタ、クラスセレクタ、IDセレクタなどがある
CSSを習得することで、HTMLで作成したWebページに視覚的な表現力を加え、ユーザーにとって見やすく使いやすいデザインを実現できます。まずは本記事で作成した実践例を参考に、さまざまなプロパティを試してみてください。