レスポンシブ対応のWebページを書く方法

# 1. はじめに
レスポンシブデザインは、現代のウェブ開発において不可欠な要素です。
異なるデバイスや画面サイズでのウェブサイトの表示を最適化することで、ユーザーエクスペリエンスを大きく向上させることができます。
この記事では、HTMLとCSSを使用してレスポンシブデザインを実現する方法について、段階的に解説します。

# 2. この記事を読んで欲しい人
- HTMLとCSSの基本を学んでいる初心者。
- レスポンシブウェブデザインの基本的な概念と実装方法を学びたい方。

# 3. 前提条件
この記事を読む前に、以下の基礎知識があると理解が容易です。
- HTMLとCSSの基本的な知識。
- ウェブページの基本的な構造とスタイリング方法。
- ブラウザでの基本的なデバッグ方法。
- メディアクエリの基本的な概念。

# 4. 最終のゴール
![スクリーンショット 2024-01-28 16.28.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2889120/94e4e7f8-4c4f-9617-addc-b735410fc959.png)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2889120/f84fdbc6-8c9e-4bbc-051e-94eaadca0e7a.png" width=50%>

# 5. 手順（コード全文は6.へ）
**1. HTMLのベース構造を作成** 
```html:example.html
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8" />
    <title>Alice Johnson, Programmer</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
    <link href="https://fonts.googleapis.com/css?family=Lato:400,700|Oswald" rel="stylesheet">
</head>

<body>
    <!-- ここにコンテンツが入ります -->
</body>

</html>
```
**2. HTMLコンテンツを追加** 
```html:example.html
<!-- ヘッダー -->
<header class="Header">
    <nav class="Container">
        <ul class="Navigation">
            <li class="Navigation-current">Portfolio</li>
            <li><a href="">Blog</a></li>
        </ul>
    </nav>
</header>

<!-- メインコンテンツ -->
<main class="Container">
    <h1>Alice Johnson, Programmer</h1>
    <img class="Photo" src="http://example.com/assets/images/profile/alice-johnson.jpg" alt="Alice Johnson">
    <!-- その他のコンテンツ -->
</main>
```

**3. CSSの基本スタイルを設定** 
```css:example.css
body {
  margin: 0;
  padding: 0;
  font-family: "Lato", sans-serif;
  font-size: 18px;
  line-height: 1.4;
  background-color: #fefefe;
  color: #333333;
}
ul {
  margin-top: 0;
  margin-bottom: 0;
}
a {
  color: #1a73e8;
  text-decoration: none;
}
/* 省略 */
```

**4. レスポンシブデザインのためのCSSを追加**
次に、異なる画面サイズに適応するためのメディアクエリを使用します。

＊ブレークポイントについて
480pxと592pxをメディアクエリのブレークポイントとして使用する理由は、一般的なデバイスやブラウザの画面サイズに基づいています。
480pxはスマートフォンの画面サイズの典型的なブレークポイントです。多くの携帯電話がこの幅を超えないことから、モバイルファーストのデザインにおいて重要なブレークポイントとなります。
592pxは少し特殊なブレークポイントで、特定の中間サイズのデバイス（小型タブレットや大型スマートフォン）をターゲットにしている可能性があります。
このブレークポイントは、モバイルとデスクトップの間の中間的なレイアウトを扱う際に役立ちます。


```css:example.css
/*Media queries*/
@media all and (min-width: 480px) {
  .Card-info {
    min-height: 200px;
  }
  .Grid-item {
    width: 48%;
  }
}
@media all and (min-width: 592px) {
  .Grid {
    display: flex;
    flex-wrap: wrap;
  }
  h1 {
    font-size: 60px;
    margin-top: 30px;
    margin-bottom: 30px;
  }
  .Grid-item {
    width: auto;
  }
  .Grid-whole {
    width: 98%;
  }
  .Grid-half {
    width: 48%;
  }
  .Grid-third {
    width: 31.3%;
  }
  .Grid-quarter {
    width: 23%;
  }
  .Social-link {
    display: inline-block;
    margin-left: 5px;
    margin-right: 5px;
  }
}
```

# 6. 完成コード
codeSandbox
https://codesandbox.io/p/sandbox/responsive-practice-9zhgkp

# 7. レスポンシブコードの留意点
- **フレキシブルなレイアウトの設計**
コンテンツが異なる画面サイズや解像度に柔軟に対応できるように、固定幅ではなくパーセンテージやビューポート幅（vw, vh）を使ったレイアウトを考案します。

- **メディアクエリの活用**
CSSのメディアクエリを使って、特定の画面サイズや条件に応じたスタイルを適用します。
デバイスやビューポートのサイズに応じて、レイアウトやフォントサイズ、画像サイズなどを動的に変更できるようにします。

- **画像とマルチメディアの柔軟性**
画像はレイアウトを崩さないように最大幅を100%に設定し、高さは自動調整されるようにします。
また、ビデオやその他のマルチメディアコンテンツもレスポンシブに対応する必要があります。

- **タッチフレンドリーなデザイン**
スマートフォンやタブレットなど、タッチスクリーンを使うデバイスにも対応するために、タップしやすいサイズのボタンやリンク、十分な間隔を持ったタップターゲットを設計します。

# 8. まとめ
レスポンシブデザインを実現するには、HTMLとCSSの基本的な知識に加えて、デバイスの画面サイズに適応するデザインの考え方を理解する必要があります。
この記事では、レスポンシブデザインの基本から、実際のコーディング手順、メディアクエリの適切な使用方法までをアウトプットしました。

# 9. 参考