TL

CSS(見た目のスタイリング)

HTML に「見た目」を与える言語。どの要素を(セレクタ)どう見せるか(プロパティ)を宣言し、レイアウトや色、余白を組み立てる。

基礎CSSWebフロントエンドレイアウト最終更新: 2026-06-04
TL;DR要点だけ先に
  • 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(要素名そのもの)
  • クラス: .btnclass="btn" を持つ要素/最頻出
  • ID: #headerid="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: 外側の余白(要素どうしの間隔。背景は透過)
box-sizing の罠

標準(content-box)では widthcontent だけ の幅を指し、padding と border は その外側に加算 されます。つまり width:200px; padding:20px の要素は実際 240px に。これを直感的にする box-sizing: border-box(width に padding/border を含める)を * 全体に当てるのが、いまの定番です。

/* 全要素を border-box に。width 計算が直感的になる */
*, *::before, *::after { box-sizing: border-box; }
margin の相殺(collapse)

上下に隣り合う 縦方向の margin は、合算ではなく 大きい方だけ が採用されます(margin: 20px30px が隣接 → 間隔は 30px)。「余白が足りない/二重に空く」と感じたら、まずこれを疑いましょう。左右では起きません。

カスケードと詳細度(衝突の決着)

同じ要素に複数のルールが当たったとき、どれが勝つか。CSS の名前の由来でもある核心です。優先順位は上から強い順に。

  1. !important 付き(多用は禁物
  2. 詳細度(specificity)が高い ルール
  3. 詳細度が同じなら、後に書かれた ルール(記述順)

詳細度は「インライン > ID > クラス/属性/擬似クラス > 要素」で数えます。

セレクタ種類詳細度の目安
style="…"インライン最強(1,0,0,0)
#headerID高い(0,1,0,0)
.btn / :hover / [type]クラス・属性・擬似クラス中(0,0,1,0)
p / div要素・擬似要素低い(0,0,0,1)
!important に頼らない

効かないスタイルを !important で押し切ると、次にそれを上書きするにはさらに !important が必要になり、雪だるま式に破綻します。まずは「なぜ別のルールが勝っているのか」を詳細度で確認し、セレクタ設計で解くのが王道です。

単位(px / rem / em / %)

サイズ指定の単位は、絶対値か相対値か で性質が分かれます。

単位基準向いている用途
px絶対(固定の点)枠線など、伸縮させたくない箇所
remルート(html)の font-sizeフォント・余白の標準。一括で拡縮できる
emその要素自身の font-sizeボタン内の余白など局所的な比率
%親要素のサイズ可変幅レイアウト(width: 50% 等)
rem を基準にする理由

ブラウザのデフォルトは 1rem = 16pxrem で組むとユーザーが文字サイズを大きくしたとき全体が連動して拡大し、アクセシビリティ に優しくなります。em は入れ子で複利的に効く(親が 1.2em、子も 1.2em だと 1.44 倍)点に注意。

レイアウト:Flexbox と Grid

現代のレイアウトはこの2つが主役。1次元なら Flexbox、2次元なら Grid が目安です。

項目FlexboxGrid
次元1次元(横一列 or 縦一列)2次元(行と列を同時に)
得意ナビ・ボタン並び・中央寄せページ全体・カード一覧の格子
指定justify-content / align-itemsgrid-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); }
}
viewport メタタグを忘れない

メディアクエリ以前に、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、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

CSSWebフロントエンドレイアウトCSSWebフロントエンドレイアウト
参考: 公式情報