レスポンシブ対応

1冊ですべて身につくHTML & CSSとWebデザイン入門講座で学ぶWebデザイン。

レスポンシブWebデザインとは、表示領域の幅によって見え方がかわるようにデザインされたWebサイトのこと。 (P216)

カラム数を1カラムにしたり、メニュー用のアイコンをタップすることで、ナビゲーションメニューを表示させる方法がある。 (P217)

viewportの設定

viewportとは、様々なデバイスにおける表示領域のこと。 (P218)

    <meta name="viewport" content="width=device-width, initial-scale=1">

VSCodeでEmmetを使うと自動で入力される呪文のことですね。

メディアクエリーの基本

メディアクエリーは、Webページが表示された画面サイズに合わせて適用する、CSSを切り替え機能。 (P218)

@media (max-width: 600px) {
  h1 {
    color: #0bd;
  }
}

上記の記述では、0から600pxの範囲の画面サイズに足して <h1> のテキストの前景色の色を指定している。

文字サイズと余白を調整

モバイル版の全ページ共通部分を「style.css」の一番下に記述する。 (P219)

/* MOBILE STYLE 0-600px*/
@media (max-width: 600px) {
  .page-title {
    font-size: 2.5rem;
  }

  /* MOBILE HEADER */
  .main-nav {
    font-size: 1rem;
    margin-top: 10px;
  }

  /* MOBILE HOME */
  .home-content {
    margin-top: 20%;
  }
}

コンテンツを縦並びにする

デスクトップバージョンでは、ロゴとナビゲーションメニューをFlexboxを使って横に並べた。スマートフォンバージョンでは縦に並べる。 (P220)

  .page-header {
    flex-direction: column;
    align-items: center;
  }

いいえ、書籍1冊ですべて身につくHTML & CSSとWebデザイン入門講座の通りに縦並びになりません。

CSSを見直したり、ブラウザの表示をリロードしたり...

数時間が溶ける。

  1. 「index.html」は縦並びになっている
  2. 「news.html」に変化なし
  3. viewport を「news.html」に追加するのを忘れていた

わかってしまえば簡単なことです。

すべてのページでレスポンシブ対応するので、すべてのページに viewport を追加するの必要があるのは当然です。

今回は書籍に従ってEmmetを使わなかった。 viewport の大切さが身にしみた。多分一生忘れない!

続いてnewsページのメインエリアとサイドバーを縦に並べる。

@media (max-width: 600px) {
  ...
  /* NEWS */
  .news-contents {
    flex-direction: column;
  }
  article,
  aside {
    width: 100%;
  }
}

縦並びになりました。しかし、コンテンツを横幅いっぱいに広げる width: 100%; が効いていません。

数時間が溶ける。

VSCodeの「Live Server」でWebサイトの見栄えを確認している。

「html」ファイルをブラザにドロップすると width: 100%; が効いた状態で表示された。

VSCodeの「Live Server」を停止し、VSCodeを起動し直す。 width: 100%; が効いた状態で表示された。

「setting.json」の設定の一部。

  "files.autoSave": "onFocusChange",

Chrome拡張の「Clear Cache」で時々キャッシュを削除している。「ファイルのURLへのアクセスを許可する」がONになっていない。

これが原因?

「ファイルのURLへのアクセスを許可する」をONにして width: 100%; を別の数値にして上書き保存。リアルタイムで変更が反映された。

でも今まではリアルタイムで変更が反映されていました。

post-xxx クラスの文字サイズや余白の調整を行います。 (P221)

タイトル、日付、カテゴリのスタイルがスッキリした。

@media (max-width: 600px) {
  .page-title {
    font-size: 2.5rem;
  }
  ...
  aside {
    margin-top: 60px;
  }
  .post-info {
    margin-bottom: 30px;
  }
  .post-date {
    width: 70px;
    height: 70px;
    font-size: 1rem;
  }
  .post-date span {
    font-size: 0.875rem;
    padding-top: 2px;
  }
  .post-title {
    font-size: 1.375rem;
  }
  .post-cat {
    font-size: 0.875rem;
    margin-top: 10px;
  }
  .post-title,
  .post-cat {
    margin-left: 80px;
  }
}

レスポンシブ対応難しいすぎるでしょ!今日はふてくされて寝る。