logo

NOTE BOOK

HTML5/CSS3の授業ノート

HTML

Date.2022.1.20

レスポンシブWEBデザイン

レスポンシブWEBデザインとは

スマートフォンやタブレットからのインターネットアクセスが増加し、WEBサイトの制作側もユーザーの閲覧環境の変化に合わせてどんなデバイスでもストレスなく閲覧できることが求められるようになりました。
ユーザーが閲覧する端末(PC、スマホ、タブレットなど)の画面サイズに合わせてページレイアウトを最適化する方法は二つあり、それぞれにメリットとデメリットがあります。

PC版、タブレット版、スマホ版などそれぞれに別のページを用意する方法
  • それぞれの環境ごとに表示する内容を大きく変えられる。
  • デバイスごとの作成になるため、混乱しにくい。
  • デバイスごとにHTML文書を作成するため、文言の修正などがあった場合それぞれに修正しなければならずチェックの手間もかかる。
  • それぞれのHTML文書ごとにURLが異なるため、異なるデバイス間で共有しにくい。
複数のデバイスで一つのページを共有する方法…レスポンシブ
  • HTML文書が一つなので修正や更新が一度で済み、チェックも一度で済む。
  • URLも共通なので、異なるデバイス間でも共有しやすい。
  • Googleなどの検索エンジンが推奨している「モバイルフレンドリー」に対応し、SEOの効果がある。
  • 同じセレクタに対して条件分けの記述をする必要があるため、CSSが複雑になり、そのぶん重くなる。
  • 文言や内容そのものを大きく変更することは出来ない。

→レスポンシブデザインを実装することによってPC版とモバイル版など複数ファイルを管理する必要がなくなる一方で、「表示するデザインが元のページに依存する」といったデメリットもありますが、このページでは2つめの方法を解説していきます。

SEO対策

検索エンジンのGoogleでは、WEBサイトのインデックス登録や検索順位にPCサイトではなくスマホサイトを基準に評価すると発表していますので、Webサイト作成時はスマホ対応を必ず実施しましょう。
スマホ対応ができているかの確認を行う時は、Googleの公式ツールである「モバイルフレンドリーテスト」を使用してみましょう。

モバイルファースト

スマートフォンなどでページを閲覧した時にユーザーにストレスを与えないような配慮をモバイルファーストと言います。
スマートフォンは画面が小さく、屋外や移動中に閲覧することが多いため、フォントが小さすぎると読みにくかったり、ボタンなどのクリックできる領域が小さすぎると指ではタップできなかったりととても見づらいサイトになってしまう可能性があります。

「スマートフォン向けサイトを優先的に制作・公開する」という意味で、モバイルファーストという言葉が使われることもありますが、必ずしもスマートフォン向けサイトを先に公開したりPCユーザーをないがしろにするという意味ではありません。
ユーザーの利用状況などの情報を元にWebサイトを設計し、スマートフォンでもストレスなく利用できるデザインにするということです。

レスポンシブWEBデザインの手順

文書そのものは1つのHTMLに記述しておき、CSSの指定で画面幅〇〇ピクセル以上の場合はA、それ以下の場合はB、というふうに指定します。
最初に大きな画面(PC)を作成し画面の幅が小さくなるにしたがってデザインを変更する方式と、最初に小さい画面(スマホなど)を作成し画面の幅が大きくなるに従ってデザインを変更する方式がありますが、ここではPC→(タブレット)→スマートフォンの順に作っていくことにします。

  1. PC版サイトの作成
  2. viewport定義を指定
  3. 横幅変動時のコンテンツ幅を設定します。
  4. Media Querie を使用してデザインを整えます。
  5. 画面サイズに合わせた表示部品を導入します。

PC版のコーディング

コンテンツの横幅は960px(body{width: 960px;})

デベロッパーツールを開いた状態でウィンドウサイズを確認しながら幅を変化させて、横スクロールバーの出現位置を確認
→PC画面でブラウザの横幅を小さくした時、横スクロールしないと全体を読めない。
スマホまたはデベロッパーツールのデバイスモードで、スマホ画面での表示を確認
→そのまま縮小されたような画面になり、字が小さすぎて読めない。

サンプル1

viewport定義の指定

viewport定義をhead要素内に指定します。

<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">

viewport定義は、一般的にスマホで表示する時にしか有効にならないので表示確認はスマホで行ってください。

PC版は設定変更なし
→変化なし
スマホまたはデベロッパーツールのデバイスモードで、スマホ画面での表示を確認
→横スクロールしないと全体を読めない。

サンプル2

横幅変動時のコンテンツ幅を設定

表示する横幅が変動しても表示領域を超えない(横スクロールが発生しない)ようにコンテンツ全体幅を設定します。
コンテンツ全体幅の調整は、以下がポイントになります。

  • コンテンツ全体幅の設定には、ボックスモデルを意識してください。
  • max-widthプロパティ(widthが取ることができる最大値)を使用すると横幅の調整がしやすくなります。
  • widthにはpxより%(親のwidthに対する割合)を指定すると柔軟に対応できる。
PC画面、スマホ画面ともに
→ブラウザ画面の横幅を小さくした時、文字の領域と画面幅のバランスが悪く文字が読みにくい。さらにスマホ画面ではグローバルナビゲーションが重なってしまっていて読めない。

サンプル3

Media Querieでデザインを整える

条件付きでスタイルを適用するMedia Querieを使って〇〇px以下の時はどうするか、という指定を加えていく。
今回はタブレットを〜1024px、スマホを〜599pxとしました。

サンプル4

ブレイクポイントの設定

デザインが切り替わる画面幅のポイントをブレイクポイントといいます。
ブレイクポイントをどこにするかは非常に悩ましいのですが、それもそのはずで、その時その時に出回っている端末の市場シェアやターゲットで変わってきます。
お仕事の場合はデザインに入る前にクライアントさんとよく確認するようにしましょう。

画面サイズに合わせた表示に変える

画面サイズに合わせて表示方法をガラッと変えることで操作性を向上させることできます。
例えば、ナビゲーションメニューの表示を横並びからハンバーガーメニューにすることで狭い画面を有効に使えるようになります。