ホームページ作成/装飾・レイアウトの動的変更 (HTML,CSS,JavaScript)

古いブラウザ用のCSSを先に書くレガシーファースト(3ページ目)

モバイルファースト設計でCSSを記述すると、古いブラウザ(特にIE8以下)では常にモバイル版デザインが表示されてしまいます。そう割り切っても良いのですが、モバイル版でもCSS3の新しい記述方法を使っているなら、古いブラウザでは表示が崩れてしまうこともあります。その対処方法として(モバイル版の記述よりも前に)「古いブラウザ用のデザイン」を先に記述する「レガシーファースト」なCSSの記述方法をご紹介。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

Media Queriesを使って、レガシーファーストなCSSを記述する概要

先ほどご紹介した手順でCSSソースを記述すると、以下のようなソースになります。
/* --------------------------------------------- */
/* ▼レガシーファースト (全環境に共通のデザイン) */
/* --------------------------------------------- */
 : : :
 : : :
/* ------------------------------------------ */
/* ▼モバイル用デザインとして付け足すデザイン */
/* ------------------------------------------ */
@media all and (min-width: 1px) {
  : : :
  : : :
}
/* -------------------------------------------- */
/* ▼タブレット用デザインとして付け足すデザイン */
/* -------------------------------------------- */
@media all and (min-width: 768px) {
  : : :
  : : :
}
/* ------------------------------------ */
/* ▼PC用デザインとして付け足すデザイン */
/* ------------------------------------ */
@media all and (min-width: 920px) {
  : : :
  : : :
}
レガシー向けの共通部分には、古いブラウザでも問題なく表示可能な記述だけを使って、シンプルな装飾を作っておきます。これを共通デザインとします。

上記のソースでは、モバイル用に追加するCSSを記述している箇所で、Media Queriesを使って以下のように記述しています。この記述は、「画面の横幅が1px以上の場合に適用する」という指示です。
@media all and (min-width: 1px) { ~~~ }
実際には画面の横幅が1px以下になるようなことはあり得ないので、ここに記述した内容は、すべての環境で表示されます。ただし、Media Queriesに非対応の古いブラウザは、この中身を読みません。そこで、この部分に、古いブラウザでは崩れてしまう原因になるCSSを書くようにします。

レガシー版としてデザインを分離する方が良い(かもしれない)例

box-sizingプロパティ
例えば、古いブラウザでレイアウトが崩れやすいプロパティとして、「横幅」の解釈を変更できる「box-sizing」プロパティがあります。このbox-sizingプロパティに関して詳しくは、記事「横幅を100%にした際、親ボックスからはみ出すのを防ぐ」をご参照下さい。box-sizingプロパティが解釈可能なことを前提にしてレイアウトを作ると、古いブラウザ(IE7以下など)ではレイアウトが崩れる可能性が高いでしょう。

※box-sizingプロパティは、IE7以下では非対応です。Firefox28以下・Chrome9以下・Safari5以下では、ベンダープレフィックスを付加しないと使えません。

したがって、レガシー版デザイン(共通デザイン)の段階では、box-sizingを使わずに済ませるような簡素なデザインに留めておき、モバイル版デザイン(以降)でbox-sizingを使って望み通りにデザインしておくと良いでしょう。

RGBAカラーモデル
ウェブ上での色指定では主に、赤・緑・青の各成分を数値で示したRGB値が使われます。このRGBに「アルファチャンネル(透明度)」を付加したRGBA値での色指定方法もあります。しかし、古いブラウザではRGBA値での指定は解釈できず、黒色で表示してしまいます。

※RGBAカラーモデルでの色指定は、IE8以下では非対応です。

したがって、レガシー版デザイン(共通デザイン)の段階では、RGB値だけを使って妥協しておき、モバイル版デザイン(以降)でRGBA値を使って望みの半透明な色を指定しておくと良いでしょう。

CSS3で追加された(古いブラウザでは表示できない)プロパティや値は他にも多数あります。それらの記述方法を使ってデザインしたい場合は、それらの記述はMedia Queriesを使って表示対象を限定した部分にだけ記述することにします。すると、「モバイルファースト」のメリットを享受しつつ、古いブラウザでも崩れずに済む書き方がしやすくなるでしょう。

モバイルファースト設計でも古いブラウザを考慮する「レガシーファースト」

今回は、CSSの記述労力を低く抑えておきつつも、(IE8以下などの)古いブラウザでもそれなりに表示できるような簡素なスタイルを追加する、「レガシーファースト」なCSSの書き方をご紹介致しました。モバイルファーストで設計する際に、古いブラウザでの表示も考慮したい場合には、ぜひ、試してみて下さい。

【関連記事】

【編集部おすすめの購入サイト】
楽天市場でホームページ作成関連の書籍を見るAmazon でホームページ作成の参考書を見る
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます