HTML CSS 違い初心者向け:基本から応用までステップバイステップで解説

IT入門辞典

はじめに

Webサイトを作るときにまず触れるのが HTMLCSS
これらは似ているようで実は「**構造と見た目を分離する」ための技術」です。
初心者にとっては「何が役割なのか」と「書き方のポイント」を把握することが最初の壁。
この記事では、HTMLとCSSの違いを丁寧に説明し、実際に手を動かしながら「見た目の作り方」を学んでいきます。
一歩ずつ進める形式にすることで、基礎から応用へスムーズに移行できるように構成しています。


1. HTMLとは? ― 構造を決める言語

1.1 HTMLは「マークアップ言語」

  • 画面上に何が表示されるかを 「タグ」 で記述します。
    • <h1>見出し</h1>:見出し(レベル1)
    • <p>本文</p>:段落
    • <a href="…">リンク</a>:リンク

1.2 要素と属性

タイプ役割
要素<div>...</div>何かを区切るブロック
属性<a href="https://example.com">追加情報を渡す(URL)

1.3 データ構造としてのHTML

  • 階層構造(親子関係)を使って文書を分解。
    • <body> 内の要素は全て 親子関係 を持つ。
  • 例:
    <section>
        <h2>セクション見出し</h2>
        <p>本文テキスト</p>
    </section>
    

1.4 実際にブラウザで確認

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>基本のHTMLサンプル</title>
</head>
<body>
    <h1>こんにちは、世界!</h1>
    <p>ここはサンプル段落です。 <a href="https://www.google.com">Googleへ</a></p>
</body>
</html>

もう一度ここで「なぜタグを書いたのか」を思い返してください。
例:<a>は「リンク」を示すために書いた。


2. CSSとは? ― 見た目をデザインする言語

2.1 CSSは「スタイルシート」

  • HTMLで構造を決定したあと、**見た目(色・フォント・レイアウト)**を設定。
  • セレクタ + プロパティ + で記述。

2.2 セレクタの種類

種類役割
要素セレクタh1 { ... }すべての<h1>に適用
クラスセレクタ.title { ... }class="title"属性を持つ要素に適用
IDセレクタ#main { ... }id="main"属性を持つ要素に適用
属性セレクタa[href^="https"] { ... }特定属性を持つ要素に適用

2.3 プロパティと値の基本

プロパティ値の例効果
colorred / #ff0000文字色
background-colorlightblue背景色
font-size18px文字サイズ
margin20px外側の余白
padding10px内側の余白
border1px solid #000枠線

2.4 例:シンプルなCSS

/* style.css */
body {
    background-color: #f8f8f8;
    font-family: "Helvetica Neue", Arial, sans-serif;
    line-height: 1.6;
}

h1 {
    color: #333;
    font-size: 2.5rem;
    text-align: center;
    margin-top: 30px;
}

p {
    color: #666;
    margin: 0 auto;
    max-width: 600px;
    padding: 0 15px;
}

2.5 HTMLとCSSを結びつける

<link rel="stylesheet" href="style.css">

3. HTMLとCSSを分離するメリット

見出し従来(混在)分離(モダン)
保守性変更が混在 → 複雑化役割が明確 → 変更しやすい
再利用性同じHTMLに同じスタイルを書きたくなるCSSだけ編集で複数ページ共通化
パフォーマンスファイルが肥大化CSSはキャッシュされ、再読み込みが高速
協業デザイナーとエンジニアの衝突が起こりやすいデザイナーはCSS担当、エンジニアはHTML担当

4. 実践!ステップバイステップでページを作ろう

4.1 ステップ1:基本的なHTML構造

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ステップバイステップ例</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <h1 class="site-title">My Blog</h1>
    </header>
    <nav class="main-nav">
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </nav>
    <main>
        <article>
            <h2>記事タイトル</h2>
            <p>記事本文のサンプルです。 …</p>
        </article>
    </main>
    <footer>
        <p>&copy; 2026 My Blog</p>
    </footer>
</body>
</html>

4.2 ステップ2:まずはベーススタイル

/* style.css */
body { margin: 0; font-family: sans-serif; line-height: 1.6; }

/* レイアウト共通 */
header, nav, main, footer { padding: 20px; }

/* グローバルカラー */
:root {
    --primary: #0066cc;
    --bg: #f4f4f4;
}

/* 背景と文字カラー */
body { background: var(--bg); color: #333; }

4.3 ステップ3:ヘッダーの装飾

header {
    background: var(--primary);
    color: #fff;
    text-align: center;
}
.site-title { margin: 0; }

4.4 ステップ4:ナビゲーションを横並びに

.main-nav ul { 
    list-style: none; 
    display: flex; 
    justify-content: center; 
    padding: 0; 
}
.main-nav a { 
    color: #fff; 
    text-decoration: none; 
    padding: 10px 15px; 
}
.main-nav a:hover { background: rgba(255,255,255,0.2); }

4.5 ステップ5:記事をレイアウト

article { 
    max-width: 800px; 
    margin: 0 auto; 
    background: #fff; 
    padding: 30px; 
    box-shadow: 0 2px 5px rgba(0,0,0,0.1); 
}
article h2 { color: var(--primary); }

4.6 ステップ6:フッター

footer { text-align: center; background: #222; color: #ddd; }
footer p { margin: 0; }

4.7 完成!

確認

  • ブラウザで開くと、ヘッダー・ナビ・本文・フッターがそれぞれ違う色とレイアウトで表示されます。
  • HTMLは「何」を配置したかの記述に専念し、CSSは「どう見せるか」を担います。

5. さらに深掘る:CSSの応用テクニック

5.1 Flexbox を使ってレイアウトを簡略化

.main-nav ul {
    display: flex;
    gap: 15px;
}

ポイントgap は Flexbox 専用。マージンを個別に扱わずにスペースを調整できます。

5.2 Gridで複雑レイアウトもサクサク

main {
    display: grid;
    grid-template-columns: 1fr 3fr; /* サイドバーと本文 */
    gap: 20px;
}

5.3 CSS カスタムプロパティ(変数)を積極的に使う

:root {
    --font-base: 16px;
    --color-text: #333;
}
body { font-size: var(--font-base); color: var(--color-text); }

メリット:色やフォントサイズを一括変更できる。
注意点:古いブラウザでは未対応の場合があるので、必要ならポリフィルを検討。

5.4 レスポンシブデザインの実装

@media (max-width: 600px) {
    .main-nav ul { flex-direction: column; }
    main { grid-template-columns: 1fr; }
}

スマホ表示時にメニューを縦並びにし、本文を全幅で表示。

5.5 アニメーションとトランジション

a {
    transition: color 0.3s ease;
}
a:hover { color: var(--primary); }

ホバーでフェードイン効果を簡単に追加できます。


6. よくある質問 (FAQ)

質問答え
Q1: HTMLとCSSを1つのファイルに書くと便利じゃない?A:実は保守性が低まります。開発が進むにつれて、クラス名の衝突やスタイルの侵食が起こりやすくなるので、分離した方が安全です。
Q2: classid は何が違う?Aid はページ内部で一意である必要があり、主にJavaScriptでの参照に使います。class は複数要素に共通のスタイルを付与するために使い、複数回使用できます。
Q3: CSSで画像を表示したいのですが?A<img src="…" alt="…"> をHTMLで配置し、CSSで width, height, border-radius などを調整します。
Q4: CSSの書き方を高速に覚える方法は?A:Google FontsやBootstrapを利用して、既存のクラスを使うと手間が省けます。また、カスタムプロパティを定義しておけば、色やフォントを一括で変更できます。
Q5: CSSファイルを複数に分けるべき?A:大規模なプロジェクトでは構造化するのがベストです。例えば layout.css, theme.css, utils.css などと分けるとメンテナンスが楽になります。

7. まとめ:HTMLとCSS、それぞれの役割をしっかり押さえよう

  1. HTML

    • 何(構造)が何であるかを書き、要素を階層で整理する
    • データの意味や関係を記述する「語彙」を持つ
  2. CSS

    • 何がどのように見えるか(色・レイアウト・フォント)を制御
    • 変更に強く、再利用性とメンテナンス性を高める
  3. 分離のメリット

    • 保守性、再利用性、パフォーマンス向上
    • デザイナーとエンジニアが協業しやすい
  4. 実践例でのポイント

    • セレクタは「意味」を持つように命名(例:.main-nav
    • カスタムプロパティでテーマを一括管理
    • Flexbox / Gridでレイアウトはコードが短くなる

これで「HTMLは何を、CSSはどう見せるか」の基本が掴めたはずです。
次のステップとしては、CSSフレームワーク(Bootstrap、Tailwind CSS など)の導入JavaScriptとの組み合わせを学び、実際に動的なWebページを作ってみましょう。

ご自身のプロジェクトに合わせて、HTMLとCSSを手書きすることができれば、Web制作はもっと自由で楽しいものになります。ぜひ、今回学んだステップを活かし、実際にコードを書いてみてください!

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント