レスポンシブ Web デザイン -メディアクエリ


メディアクエリはCSS3で紹介されています:CSS3 @media クエリ。

@media クエリを使用すると、さまざまなメディアタイプに応じて異なるスタイルを定義できます。

例

ブラウザウィンドウが500px未満の場合、背景は水色になります:

@media only screen and (max-width: 500px) {
    body {
        background-color: lightblue;
    }
}

試してみる »

ブレークポイントの追加

以前のチュートリアルでは、行と列を使用してWebページを作成しました。レスポンシブですが、小さい画面ではうまく表示されません。

メディアクエリはこの問題を解決するのに役立ちます。デザインの中間にブレークポイントを追加でき、ブレークポイントごとに異なる効果があります。

デスクトップデバイス

モバイルデバイス

メディアクエリを使用して768pxでブレークポイントを追加します:

例

画面(ブラウザウィンドウ)が768px未満の場合、各列の幅は100%になります:

/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}

@media only screen and (max-width: 768px) {
    /* For mobile phones: */
    [class*="col-"] {
        width: 100%;
    }
}

試してみる »

モバイルファーストデザイン

モバイルファーストとは、デスクトップやその他のデバイスを設計する際に、モバイル端末のデザインを優先することを意味します。

これはCSSをいくつか変更する必要があることを意味します。

画面が768px未満の場合にスタイルを変更し、画面幅が768pxより大きい場合もスタイルを変更する必要があります。以下はモバイルファーストの例です:

/* モバイル端末向けのデザイン: */
[class*="col-"] {
    width: 100%;
}
@media only screen and (min-width: 768px) {
    /* For desktop: */
    .col-1 {width: 8.33%;}
    .col-2 {width: 16.66%;}
    .col-3 {width: 25%;}
    .col-4 {width: 33.33%;}
    .col-5 {width: 41.66%;}
    .col-6 {width: 50%;}
    .col-7 {width: 58.33%;}
    .col-8 {width: 66.66%;}
    .col-9 {width: 75%;}
    .col-10 {width: 83.33%;}
    .col-11 {width: 91.66%;}
    .col-12 {width: 100%;}
}

その他のブレークポイント

必要に応じてブレークポイントを追加できます。

タブレットデバイスとモバイルデバイス用にブレークポイントを設定することもできます。

デスクトップデバイス

タブレットデバイス

モバイルデバイス

画面が600pxのときにメディアクエリを追加し、新しいスタイルを設定します(画面が600pxより大きく768px未満):

例

2つのクラススタイルは同じですが、名前が異なることに注意してください (col- と col-m-):

/* For mobile phones: */
[class*="col-"] {
    width: 100%;
}
@media only screen and (min-width: 600px) {
    /* For tablets: */
    .col-m-1 {width: 8.33%;}
    .col-m-2 {width: 16.66%;}
    .col-m-3 {width: 25%;}
    .col-m-4 {width: 33.33%;}
    .col-m-5 {width: 41.66%;}
    .col-m-6 {width: 50%;}
    .col-m-7 {width: 58.33%;}
    .col-m-8 {width: 66.66%;}
    .col-m-9 {width: 75%;}
    .col-m-10 {width: 83.33%;}
    .col-m-11 {width: 91.66%;}
    .col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
    /* For desktop: */
    .col-1 {width: 8.33%;}
    .col-2 {width: 16.66%;}
    .col-3 {width: 25%;}
    .col-4 {width: 33.33%;}
    .col-5 {width: 41.66%;}
    .col-6 {width: 50%;}
    .col-7 {width: 58.33%;}
    .col-8 {width: 66.66%;}
    .col-9 {width: 75%;}
    .col-10 {width: 83.33%;}
    .col-11 {width: 91.66%;}
    .col-12 {width: 100%;}
}

試してみる »

上記のコードは冗長に見えますが、画面サイズに応じて異なるスタイルを自動的に設定できるため、非常に必要です。

HTML の例

デスクトップデバイス向け:

1番目と3番目の部分は3列にわたります。中央の部分は6列にわたります。

タブレットデバイス向け:

最初は3列、2番目の部分は9列、3番目の部分は12列にわたります:

<div class="row">
<div class="col-3 col-m-3">...</div>
<div class="col-6 col-m-9">...</div>
<div class="col-3 col-m-12">...</div>
</div>

方向:横画面/縦画面

CSSメディアクエリと組み合わせることで、さまざまなデバイスの方向(横画面landscape、縦画面portraitなど)に適応するレイアウトを作成できます。

構文:

orientation:portrait | landscape
  • portrait:出力デバイスのページ表示領域の高さが幅以上であることを指定します
  • landscape:portrait値以外の場合は、すべてlandscapeです

例

横画面の場合、背景は水色になります:

@media only screen and (orientation: landscape) {
    body {
        background-color: lightblue;
    }
}

試してみる »
その他の拡張