CSSチュートリアル

CSSホーム CSSの紹介 CSS構文 CSSセレクター CSSハウツー CSSコメント CSSの色 CSSの背景 CSSボーダー CSSマージン CSSパディング CSSの高さ/幅 CSSボックスモデル CSSの概要 CSSテキスト CSSフォント CSSアイコン CSSリンク CSSリスト CSSテーブル CSSディスプレイ CSSの最大幅 CSSの位置 CSSZ-index CSSオーバーフロー CSSフロート CSSインラインブロック CSS整列 CSSコンビネータ CSS疑似クラス CSS疑似要素 CSSの不透明度 CSSナビゲーションバー CSSドロップダウン CSS画像ギャラリー CSS画像スプライト CSS AttrSelectors CSSフォーム CSSカウンター CSSWebサイトのレイアウト CSSユニット CSSの特異性 CSS!重要 CSS数学関数

CSS Advanced

CSSの丸みを帯びたコーナー CSSボーダー画像 CSSの背景 CSSの色 CSSカラーキーワード CSSグラデーション CSSシャドウ CSSテキスト効果 CSSWebフォント CSS2D変換 CSS3D変換 CSSトランジション CSSアニメーション CSSツールチップ CSSスタイルの画像 CSS画像反射 CSSオブジェクト適合 CSSオブジェクトの位置 CSSマスキング CSSボタン CSSページ付け CSSの複数の列 CSSユーザーインターフェイス CSS変数 CSSボックスのサイズ設定 CSSメディアクエリ CSSMQの例 CSSFlexbox

CSSレスポンシブ

RWDイントロ RWDビューポート RWDグリッドビュー RWDメディアクエリ RWD画像 RWDビデオ RWDフレームワーク RWDテンプレート

CSSグリッド

グリッドイントロ グリッドコンテナ グリッドアイテム

CSS SASS

SASSチュートリアル

CSSの

CSSテンプレート CSSの例 cssクイズ CSS演習 CSS証明書

CSSリファレンス

CSSリファレンス CSSセレクター CSS関数 CSSリファレンスオーラル CSSWebセーフフォント CSSアニメーション可能 CSSユニット CSSPX-EMコンバーター CSSの色 CSSの色の値 CSSのデフォルト値 CSSブラウザのサポート

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


メディアクエリとは何ですか?

メディアクエリは、CSS3で導入されたCSS手法です。

@media特定の条件が真である場合にのみ、ルールを使用してCSSプロパティのブロックを含めます。

ブラウザウィンドウが600px以下の場合、背景色は水色になります。

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

ブレークポイントを追加する

このチュートリアルの前半で、行と列を含むWebページを作成しました。これは応答性がありましたが、小さな画面では見栄えがよくありませんでした。

メディアクエリはそれを助けることができます。デザインの特定の部分がブレークポイントの両側で異なる動作をするブレークポイントを追加できます。


デスクトップ

電話

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

画面(ブラウザウィンドウ)が768ピクセルより小さくなると、各列の幅は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より大きくなったときにデザインを変更する必要があります。これにより、デザインがモバイルファーストになります。

/* 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%;}
}

別のブレークポイント

ブレークポイントはいくつでも追加できます。

また、タブレットと携帯電話の間にブレークポイントを挿入します。


デスクトップ

タブレット

電話

これを行うには、もう1つのメディアクエリ(600px)と、600pxより大きい(ただし768pxより小さい)デバイス用の新しいクラスのセットを追加します。

2つのクラスのセットはほとんど同じであることに注意してください。唯一の違いは、名前(col-col-s-)です。

/* For mobile phones: */
[class*="col-"] {
  width: 100%;
}

@media only screen and (min-width: 600px) {
  /* For tablets: */
  .col-s-1 {width: 8.33%;}
  .col-s-2 {width: 16.66%;}
  .col-s-3 {width: 25%;}
  .col-s-4 {width: 33.33%;}
  .col-s-5 {width: 41.66%;}
  .col-s-6 {width: 50%;}
  .col-s-7 {width: 58.33%;}
  .col-s-8 {width: 66.66%;}
  .col-s-9 {width: 75%;}
  .col-s-10 {width: 83.33%;}
  .col-s-11 {width: 91.66%;}
  .col-s-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%;}
}

同一のクラスが2セットあるのは奇妙に思えるかもしれませんが、HTMLで、各ブレークポイントの列で何が起こるかを決定する機会が与えられます。

HTMLの例

デスクトップの場合:

最初と3番目のセクションは両方ともそれぞれ3列にまたがります。中央のセクションは6列にまたがります。

タブレットの場合:

最初のセクションは3列にまたがり、2番目は9列にまたがり、3番目のセクションは最初の2つのセクションの下に表示され、12列にまたがります。

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

典型的なデバイスブレークポイント

高さと幅が異なる画面やデバイスがたくさんあるため、デバイスごとに正確なブレークポイントを作成することは困難です。物事を単純にするために、5つのグループをターゲットにすることができます。

/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {...}

/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {...}

/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {...}

/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {...}

/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {...}

オリエンテーション:ポートレート/ランドスケープ

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

ブラウザウィンドウがその高さよりも広い場合にのみ適用されるCSSプロパティのセット、いわゆる「横向き」の向きを設定できます。

向きが横向きモードの場合、Webページの背景は水色になります。

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

メディアクエリで要素を非表示にする

メディアクエリのもう1つの一般的な使用法は、さまざまな画面サイズの要素を非表示にすることです。

私は小さな画面に隠されます。

/* If the screen size is 600px wide or less, hide the element */
@media only screen and (max-width: 600px) {
  div.example {
    display: none;
  }
}

メディアクエリでフォントサイズを変更する

メディアクエリを使用して、さまざまな画面サイズの要素のフォントサイズを変更することもできます。

可変フォントサイズ。

/* If the screen size is 601px or more, set the font-size of <div> to 80px */
@media only screen and (min-width: 601px) {
  div.example {
    font-size: 80px;
  }
}

/* If the screen size is 600px or less, set the font-size of <div> to 30px */
@media only screen and (max-width: 600px) {
  div.example {
    font-size: 30px;
  }
}

CSS @ mediaリファレンス

すべてのメディアタイプと機能/式の完全な概要については 、CSSリファレンスの@mediaルールを参照してください