0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TechAcademyが無料公開している「レスポンシブWebデザイン入門講座」を受講する~第3回~

Posted at

アジェンダ

  • メディアクエリ
    • メディアクエリとは
    • 書き方
    • メディアタイプの例
    • メディア特性の例
  • スマートフォンの「フィット」機能への対応
  • 高解像度ディスプレイへの対応
  • 実践

メディアクエリ

メディアクエリとは

PCのモニター(横長)やスマートフォンの画面(縦長)など、表示させるデバイスに適した表示方法を選択する手法。

書き方

メディアクエリは、HTMLのlinkタグで指定する方法と、CSSで指定する方法がある。

html
<!-- 条件を満たすデバイスで閲覧する場合、CSSファイルの記述が適応される. -->
<link rel="stylesheet" href="./style.css" media="メディアクエリの条件文">
css
/* 条件を満たすデバイスで閲覧する場合、CSSの記述が適応される */
@media (メディアクエリの条件文) {
  /* CSSの記述 */
}

「メディアクエリの条件文」は、メディアタイプやメディア特性を指定することができる。

メディアタイプの例

メディアタイプには以下のようなものがある。

all
全てのデバイス
screen
一般的なディスプレイ(モニター、スマートフォン、など)
projection
プロジェクター
print
印刷

メディア特性の例

メディア特性には以下のようなものがある。

width
表示領域の横幅
height
表示領域の縦幅
max-width
CSSが適応される、最大の表示領域の横幅
min-width
CSSが適応される、最小の表示領域の横幅
device-width
デバイスの横幅
device-height
デバイスの縦幅
orientation
デバイスの向き(縦: portrait 横: landscape)

スマートフォンの「フィット」機能への対応

スマートフォンのブラウザには、画面の解像度をページに合わせる「フィット」という機能がある。
この機能が働くと、メディアクエリが正常に働かない場合がある。

フィット機能に対応するために、以下の通りに__「デバイスの解像度を、デバイスの画面サイズに設定する」__記述をする必要がある。

<meta mame="viewport" content="width=device-width">

高解像度ディスプレイへの対応

ディスプレイの中には、1pxの表示に2つのピクセルを使用する「高解像度ディスプレイ」が存在する。
この高解像度ディスプレイでは、1ピクセルの大きさが通常のディスプレイと異なるため、表示が崩れてしまう場合がある。

高解像度ディスプレイに対応するために、メディア特性に以下の記述を追記する必要がある。

/* 通常のディスプレイ. */
-webkit-device-pixel-ratio: 1

/* 高解像度ディスプレイ. */
-webkit-device-pixel-ratio: 2

実践

上記の内容を用いて以下のindex.html、style_pc.css、style_phone.cssを作成した。

index.html
<!DOCTYPE html>

<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta mame="viewport" content="width=device-width">
    
    <!-- 一般的なPCモニター用のCSS. -->
    <link rel="stylesheet" href="./style_pc.css" media="screen and (min-width: 1024px)">
    <!-- 一般的なスマートフォン用のCSS. -->
    <link rel="stylesheet" href="./style_phone.css" media="(min-width: 768px) and (max-width: 1023px)">
    
    <title>レスポンシブなサイト</title>
  </head>
  <body>
    <div class="title">レスポンシブなサイト</div>
    <img src="./makoto.jpg" alt="上目遣いの天使" class="profile_icon">
    <div class="content">
      <p>標準的なPCのモニターでは、画像の右側に文字が配置されているはずです。スマートフォンサイズでは、画像の下に文字が配置されているはずです。</p>
      <p>表示させるデバイスによって適した表示方法になるサイトを、<span class="strong">レスポンシブなサイト</span>といいます。</p>

      <!-- 使用しているCSSファイルによって、表示を変化させる. -->
      <p class="device_content">現在、<span class="device"></span>用のWebページが表示されています。</p>
    </div>
  </body>
</html>
style_pc.css
.title {
  font-size: 3em;
  font-weight: bold;
  color: brown;
  text-shadow: 7px 7px 2px burlywood;
  margin: 1em;
  padding: 0.2em;
  border-style: dotted;
  border-color: chocolate;
  border-radius: 1em;
}

.profile_icon {
  margin: 2em;
  width: 500px;
  height: 500px;
  float: left;
}

.content {
  margin: 5%;
}

.strong {
  font-weight: bold;
  text-decoration: underline;
}

.device_content {
  font-size: 2em;
  line-height: 2em;
}

/* PC用のCSSで表示していることをWebページに表示する. */
.device::before {
  content: "PC";
  font-weight: bold;
  color: orange;
}
style_phone.css
.title {
  font-size: 3em;
  font-weight: bold;
  color: brown;
  text-shadow: 7px 7px 2px burlywood;
  margin: 1em;
  padding: 0.2em;
  border-style: dotted;
  border-color: chocolate;
  border-radius: 1em;
}

.profile_icon {
  margin: 0em 25%;
  width: 300px;
  height: 300px;
}

.content {
  margin: 5%;
}

.strong {
  font-weight: bold;
  text-decoration: underline;
}

.device_content {
  font-size: 2em;
  line-height: 2em;
}

/* スマートフォン用のCSSで表示していることをWebページに表示する. */
.device::before {
  content: "スマートフォン";
  font-weight: bold;
  color: orange;
}

これをWebブラウザに表示させるとこんな感じ。
GoogleChromeのデベロッパーツールで、PCで閲覧した場合とスマートフォン(iPhone6)で閲覧した場合を確認。

●PC
index_pc.png

●iPhone6
index_phone.png

このように、今どのデバイスによって、文書の構造や表示させる文章を変化させることもできる。
(CSSで文書を表示させる手法についての是非は、また別の話)

おわりに

今回は、ついにレスポンシブな内容だった。
デバイスごとに複数のCSSファイルを用意するか、一つのCSSファイルを作成してその中でデバイスを指定するか・・・。
より良い設計を心がけるために、調べよう。

参考

3-1 メディアクエリとは(メディアクエリ)
3-2 メディアタイプ(メディアクエリ)
3-3 メディア特性(メディアクエリ)
3-4 環境に合わせた指定の追加(メディアクエリ)
3-5 ページの印刷(メディアクエリ)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?