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

❮ 前章へ 次章へ ❯

メディア・クエリとは?

メディア・クエリは​​、CSS3 で導入された CSS のテクニックです。

これは、特定の条件が真である場合にのみ、@media ルールを使用し CSS プロパティのブロックをインクルードします。

ブラウザウィンドウが 500px よりも小さい場合には、背景色が水色に変わります:

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

ブレークポイントの追加

このチュートリアルの前段では、行と列を使用したレスポンシブな 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%;
    }
}
Try it Yourself ❯

常にモバイルファーストな設計を

モバイルファーストとは、デスクトップやその他のデバイス用に設計するよりも前に、先ずモバイル用に設計すると言うことです (これは、小さなデバイスではページの表示が速くなります)。

これは、私たちの CSS の一部に変更を加える必要があることを意味しています。

幅が 768px より小さいときのスタイルを変更する代わりに、幅が 768px より大きいときのデザインを 変更すべきです。これが、デザインをモバイルファーストにします:

/* For mobile phones: */
[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%;}
}
Try it Yourself ❯

他のブレークポイント

あなたは、好きなだけブレークポイントを追加することができます。

タブレットとスマホの間にもブレークポイントを挿入します。


デスクトップ

タブレット

携帯

もう 1 つのメディア・クエリ (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%;}
}
Try it Yourself ❯

デスクトップの場合:

1番目と3番目のセクションは、両方とも3カラムに跨ります。中央のセクションは6カラムに跨ります。

タブレットの場合:

1番目のセクションは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>

2 組の同じクラスがあることを奇妙に思えるかもしれませんが、各々のブレークポイントでカラムに何を起こさせるかを決めるための、 HTML における機会を与えてくれます:

HTML の例

デスクトップの場合:

1 番目と 3 番目のセクションは、両方とも 3 カラムを占有します。中央のセクションは 6 カラムを占有します。

タブレットの場合:

1 番目のセクションは 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>

方向: 縦(Portrait) / 横(Landscape)

メディアクエリは、ブラウザの方向に従ってページのレイアウトを変更するのにも使用することができます。

ブラウザウィンドウが、いわゆる「横」方向("Landscape" orientation)と呼ばれる、 高さよりも広い場合にのみ適用される CSS プロパティの組を持つことができます:

方向が landscape mode (横方向モード)であれば、web ページの背景は水色になります:

@media only screen and (orientation: landscape) {
    body {
        background-color: lightblue;
    }
}
Try it Yourself ❯
❮ 前章へ 次章へ ❯