CSS(見た目のスタイリング)
HTML に「見た目」を与える言語。どの要素を(セレクタ)どう見せるか(プロパティ)を宣言し、レイアウトや色、余白を組み立てる。
- 1.CSS は「どの要素を(セレクタ)」「どう見せるか(プロパティ:値)」を指定する宣言型のスタイル言語。
- 2.要素の大きさは margin / border / padding / content からなるボックスモデルで決まり、box-sizing で計算方法が変わる。
- 3.ルールが衝突したら詳細度→記述順(カスケード)で勝者が決まる。レイアウトは Flexbox(1次元)と Grid(2次元)が主役。
ルールの基本形
CSS の最小単位は ルール。「セレクタ」で対象を絞り、{ } の中に「プロパティ: 値;」の宣言を並べます。
/* セレクタ { プロパティ: 値; } */
p {
color: #333; /* 文字色 */
font-size: 16px; /* 文字サイズ */
line-height: 1.6; /* 行間 */
}
HTML に適用する方法は3通り。優先度や保守性が違います。
| 書き方 | 例 | 使いどころ |
|---|---|---|
| 外部CSS | <link rel="stylesheet" href="style.css"> | 本番の基本。再利用・キャッシュが効く |
| 内部CSS | <style>…</style>(HTML内) | そのページ限定の調整 |
| インライン | style="color:red"(属性) | 最終手段。詳細度が高く上書きしづらい |
セレクタ(どれを選ぶか)
代表的なセレクタを、よく使う順に。
- タイプ:
p,h1(要素名そのもの) - クラス:
.btn(class="btn"を持つ要素/最頻出) - ID:
#header(id="header"。ページ内で一意) - 属性:
[type="text"],a[href^="https"] - 擬似クラス:
:hover(マウスが乗った状態),:first-child,:focus - 結合子:
.card p(子孫),.card > p(直接の子),h2 + p(隣接)
.btn:hover { background: #2563eb; } /* ホバー時だけ */
nav a[aria-current="page"] { font-weight: bold; }
ボックスモデル(大きさの正体)
すべての要素は 4層の箱 で描かれます。内側から content → padding → border → margin。
- content: 中身(文字や画像)そのもの
- padding: 内側の余白(背景色が及ぶ)
- border: 枠線
- margin: 外側の余白(要素どうしの間隔。背景は透過)
標準(content-box)では width は content だけ の幅を指し、padding と border は その外側に加算 されます。つまり width:200px; padding:20px の要素は実際 240px に。これを直感的にする box-sizing: border-box(width に padding/border を含める)を * 全体に当てるのが、いまの定番です。
/* 全要素を border-box に。width 計算が直感的になる */
*, *::before, *::after { box-sizing: border-box; }
上下に隣り合う 縦方向の margin は、合算ではなく 大きい方だけ が採用されます(margin: 20px と 30px が隣接 → 間隔は 30px)。「余白が足りない/二重に空く」と感じたら、まずこれを疑いましょう。左右では起きません。
カスケードと詳細度(衝突の決着)
同じ要素に複数のルールが当たったとき、どれが勝つか。CSS の名前の由来でもある核心です。優先順位は上から強い順に。
!important付き(多用は禁物)- 詳細度(specificity)が高い ルール
- 詳細度が同じなら、後に書かれた ルール(記述順)
詳細度は「インライン > ID > クラス/属性/擬似クラス > 要素」で数えます。
| セレクタ | 種類 | 詳細度の目安 |
|---|---|---|
| style="…" | インライン | 最強(1,0,0,0) |
| #header | ID | 高い(0,1,0,0) |
| .btn / :hover / [type] | クラス・属性・擬似クラス | 中(0,0,1,0) |
| p / div | 要素・擬似要素 | 低い(0,0,0,1) |
効かないスタイルを !important で押し切ると、次にそれを上書きするにはさらに !important が必要になり、雪だるま式に破綻します。まずは「なぜ別のルールが勝っているのか」を詳細度で確認し、セレクタ設計で解くのが王道です。
単位(px / rem / em / %)
サイズ指定の単位は、絶対値か相対値か で性質が分かれます。
| 単位 | 基準 | 向いている用途 |
|---|---|---|
| px | 絶対(固定の点) | 枠線など、伸縮させたくない箇所 |
| rem | ルート(html)の font-size | フォント・余白の標準。一括で拡縮できる |
| em | その要素自身の font-size | ボタン内の余白など局所的な比率 |
| % | 親要素のサイズ | 可変幅レイアウト(width: 50% 等) |
ブラウザのデフォルトは 1rem = 16px。rem で組むとユーザーが文字サイズを大きくしたとき全体が連動して拡大し、アクセシビリティ に優しくなります。em は入れ子で複利的に効く(親が 1.2em、子も 1.2em だと 1.44 倍)点に注意。
レイアウト:Flexbox と Grid
現代のレイアウトはこの2つが主役。1次元なら Flexbox、2次元なら Grid が目安です。
| 項目 | Flexbox | Grid |
|---|---|---|
| 次元 | 1次元(横一列 or 縦一列) | 2次元(行と列を同時に) |
| 得意 | ナビ・ボタン並び・中央寄せ | ページ全体・カード一覧の格子 |
| 指定 | justify-content / align-items | grid-template-columns / gap |
/* Flexbox: 横並びで中央に揃える */
.toolbar {
display: flex;
justify-content: space-between; /* 主軸(横)の配置 */
align-items: center; /* 交差軸(縦)の配置 */
gap: 12px; /* 要素間の隙間 */
}
/* Grid: 3列の格子。1fr は余りを等分する単位 */
.cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
レスポンシブの触り
画面幅に応じて見た目を変えるには メディアクエリ を使います。スマホ向けを基本に、広い画面で上書きする「モバイルファースト」が定石です。
/* 既定(スマホ): 1列 */
.cards { grid-template-columns: 1fr; }
/* 画面が 768px 以上になったら 3列に */
@media (min-width: 768px) {
.cards { grid-template-columns: repeat(3, 1fr); }
}
メディアクエリ以前に、HTML の <head> に <meta name="viewport" content="width=device-width, initial-scale=1"> が必要です。これが無いとスマホがPC幅で描画して縮小表示になり、レスポンシブが効きません。詳しくは レスポンシブデザイン で。
つまずきポイントまとめ
- width が思った大きさにならない →
box-sizing: border-boxを確認 - 余白が二重/不足 → 縦 margin の相殺を疑う
- スタイルが効かない → デベロッパーツールで詳細度と打ち消し線(取り消されたルール)を確認
- 中央寄せできない → ブロック中央は
margin: 0 auto、子要素の整列は Flexbox/Grid で
最後はブラウザの デベロッパーツール(要素を右クリック →「検証」)が最強の味方。適用中のルールと、どれが勝っているかが一目で分かります。仕様の一次情報は MDN が信頼できます。
Web/フロントエンド Article
CSS(見た目のスタイリング)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
CSS
比較で見る軸
難易度: basic / カテゴリ: Web/フロントエンド / タグ数: 4
導入後に効く点
要素の大きさは margin / border / padding / content からなるボックスモデルで決まり、box-sizing で計算方法が変わる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- basic
- カテゴリ
- Web/フロントエンド
- タグ数
- 4
判断チェックリスト
- 自社の用途が「CSS / Web」に近いか確認する。
- 強みである「CSS は「どの要素を(セレクタ)」「どう見せるか(プロパティ:値)」を指定する宣言型のスタイル言語。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。