スマホ対応!CSSでメディアクエリの書き方【初心者向け】

初心者向けにCSSでメディアクエリの書き方について解説しています。Webサイト制作で必要なスマートフォン対応、レスポンシブデザインの書き方を理解できるでしょう。実際にコードを書きながら例をもとに説明しているので、ぜひご覧ください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回はbootstrapなどを使わずにレスポンシブページを実現する方法であるメディアクエリを説明します。Webサイトを作る上でスマホ対応は当たり前になってきています。

これからWebサイトを作る上では必ず必要になる知識なので、ぜひ今のうちに習得しましょう。

 

なお本記事は、TechAcademyのWebデザインオンラインブートキャンプのカリキュラムをもとに執筆しています。

 

なお、今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

田島悠介

今回はメディアクエリを利用する方法を解説しよう。

大石ゆかり

田島メンター!!メディアクエリというのは何ですか〜?

田島悠介

スクリーンや印刷などのメディアタイプに加えて、さらに縦横の長さなどによるスタイルの適用範囲を決めることができるものなんだ。

大石ゆかり

なるほど、色々な条件に対応して見え方を変えるという感じでしょうか?よろしくお願いします!

 

目次

 

メディアクエリとは

今や、Webページを閲覧する際にレスポンシブデザインであることは当たり前になりつつあります。メディアクエリはCSSを用いて、レスポンシブなWebページを作ることができます。

CSS3になってから登場した新しい表現なのでぜひ習得していきましょう。

CSSサンプルコード

<link rel="stylesheet" href="sample.css" type="text/css" media="screen and (max-width:300px)">

上に書いているのがメディアクエリの設定記述です。

わからないところはおそらく、後半の「media=”screen and (max-width:300px)”」の部分ではないでしょうか。

「media」はWebページを見ている人の媒体を取得するCSSの記述になります。他には以下のメディアタイプがあります。

  • screen(ディスプレイ)
  • print(プリンタ)
  • tv(テレビ)
  • projection(プロジェクター)
  • all(すべて)

今までは上記だけでも十分ですが、スマートフォンの出現によってディスプレイの幅が異なるという課題があります。

これを解決するために、「max-width:300px」等でディスプレイ幅を取得し、PCなのか、スマートフォンなのか判断する必要があるのです。

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

メディアクエリの書き方

書き方は上記で説明した書き方に沿います。

しかし、「media=”screen and (max-width:480px)”」の記述では300px以下の媒体に「sample.css」が適用されません。

次のように記述します。

 

CSSサンプルコード2

<link rel="stylesheet" href="sample.css" type="text/css" media="screen and (max-width:600px)">
<link rel="stylesheet" href="sample2.css" type="text/css" media="screen and (max-width:300px)">
<link rel="stylesheet" href="sample3.css" type="text/css" media="screen and (max-width:0px)">

<link>を使って各メディアごとに適用するCSSを変更しています。

しかし、メディアごとに記述しないといけないのは非常に面倒なのでCSS内に直接書き込みを行いましょう。

以下のように記述するのが一般的です。

 

CSSサンプルコード3

@media screen and (min-width:0px){
  /*0px以上で適用する内容*/
}

@media screen and (min-width:300px){
  /*300px以上で適用する内容*/
}

@media screen and (min-width:600px){
  /*600px以上で適用する内容*/
}

こうすることで、各メディアに対応したデザインを実現できます。

 

田島悠介

この場合各幅ごとに、それぞれ適用させたい内容を入れていけばいいわけだね。

大石ゆかり

CSSファイル内で入力するのが一番見やすい感じがします。

田島悠介

次は実際にメディアクエリを使って、状態によってスタイルが変わるか見てみよう。

 

実際に書いてみよう

実際にコードを書いてみましょう。

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>メディアクエリ</title>
    <link rel="stylesheet" type="text/css" href="sample.css">
  </head>
  <body>

    <p>ディスプレイサイズによって文字の色が変わります。</p>
    <ul>
      <li>300px以下</li>
      <li>301px以上600px以下</li>
      <li>600px以上</li>
    </ul>

  </body>
</html>

CSS

@media screen and (min-width:0px){
  body{
    color: #5bc0de;
  }
}

@media screen and (min-width:300px){
  body{
    color: #d9534f;
  }
}

@media screen and (min-width:600px){
  body{
    color: #115a71;
  }
}

300px刻みで背景が変わっていると思います。

css_05

ぜひWebブラウザの幅を変更して変化を楽しんでください。

 

以上、メディアクエリの使い方を解説しました。

スマホ対応の書き方はいろいろありますが、一つ覚えておくと作業も捗るはずです。

 

田島悠介

ここでは横幅に応じてbodyの文字色を変更するように指定しているんだ。

大石ゆかり

サイズによって文字の色が変わっているのが分かりますね。

田島悠介

画面の状態によってスタイルを変えることで、より様々なメディアに対応したレスポンシブデザインが実装できるのでぜひ活用してみよう。

大石ゆかり

挑戦してみます。ありがとうございました!

また、現役エンジニアから学べる無料のプログラミング体験会もオンラインで実施しているので、ぜひ参加してみてください。

[お知らせ]TechAcademyでは初心者でも最短4週間でオリジナルWebサイトを公開できるWebデザインオンラインブートキャンプを開催しています。