Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8945

【CSS】メディアクエリ(@media)とは?CSSへの直接記述とファイルを読み込む方法。

$
0
0

メディアクエリ@mediaの使い方について。

目次

  1. メディアクエリとは?
  2. メディアクエリの使い方
    1. ビューポートの指定
    2. メディアクエリの記述方法
  3. メディアタイプ一覧
  4. 主なメディア特性一覧
  5. 論理演算子一覧
  6. メディアクエリを使ったレスポンシブ実例


メディアクエリとは?

対象のデバイス(メディアタイプ)と画面幅や画面の向きなど(メディア特製)を指定するコード。

スマホやPCなどデバイスの画面幅によってページの文字サイズや横幅を変更する際に使用する。(レスポンシブデザイン)


メディアクエリの使い方

ビューポートの指定

メディアクエリを適用するためにはhtmlのheadタグ内にビューポートを記述する必要がある。

html.html
<metaname="viewport"content="width=device-width, initial-scale=1.0">

width=device-width
表示幅は閲覧しているデバイスの表示幅とする。

initial-scale=1.0
表示倍率を拡大・縮小なしに指定。


メディアクエリの記述方法

記述には2つの方法がある。

  1. linkタグに記述する方法
  2. .cssのファイル(スタイルシート)に記述する方法

指定がmedia属性@mediaの違いで基本文法は同じ。

メディアクエリ基本文法
//.html
media = "[メディアタイプ] [論理演算子] [(メディア特性: 値)]"

//.css
@media{ [メディアタイプ] [論理演算子] [(メディア特性: 値)] { セレクタ {処理} }
  • メディア特性は( )で囲む。
  • メディアタイプや特性を追加したい場合は、and (メディア特性: 値)でつなぐ。
  • 複数のメディアクエリをつなげたい場合はカンマを使う。

1. linkタグに記述する方法

<link rel="stylesheet" href="ファイルパス" media="[メディアタイプ] [論理演算子] [(メディア特性: 値)]">

.htmlの例
<linkrel="stylesheet"href="style.css"media="screen and (min-width:375px)">

2. .cssのファイル記述する方法

・{ @media [メディアタイプ] [論理演算子] [(メディア特性: 値)]{ セレクタ{ 処理 }}>

.cssの例
@mediascreenand(min-width:375px){div{color:red;}}


メディアタイプ一覧

メディアタイプ内容
screenディスプレイ(スマホ、PC、デスクトップなど)
print印刷プレビューモード
speech音声合成
allすべての端末

WEBサイト作成の場合は基本的にscreen一択。

メディアタイプの指定がない場合はall


論理演算子一覧

演算子内容
and複数のメディア特性を一つにまとめる
,複数のメディアクエリを連結する(orのような挙動)
notメディアクエリを否定する
onlyクエリすべてが一致した場合のみスタイルを適用する

・only
onlyを使用しない場合、古いブラウザーは screen and (max-width: 500px) というクエリを単なる screen として解釈する。
結果、クエリの注釈(メディア特性)を無視し、あらゆる画面にスタイルを適用してしまう。
only演算子を使用する場合は、メディアタイプも指定しなければなりません。


主なメディア特性一覧

メディア特性内容min-/max-
width表示幅を指定する✔︎
max-width最大幅を指定(表示をこれ以上大きくしない)
min-width最少幅を指定(表示をこれ以上小さくしない)
height表示高さを指定する✔︎
orientation画面の向き。値は、縦長ならportrait、横長ならlandscapeとなる
resolution解像度。値はdpiで指定✔︎
aspect-ratioアスペクト比。値は、横/縦 で指定。✔︎

他にも多数ある。

(参考)mozilla メディア特性

レスポンシブの設定で使うのは、max-width, min-width, widthがメイン。


メディアクエリの使用例

画面幅○○px以上に適用するcssを定義する場合はmin-widthを使う。

.css
@mediascreenand(min-width:○○px){.class{処理}



▼適用範囲を指定する場合
○○px〜△△pxというように範囲を指定したい場合は、min-widthmax-widthを使う。

.css
@mediascreenand(min-width:○○px)and(max-width:△△px){.class{処理}

この○○pxや△△pxなど適用されるcssが変わるポイントをブレイクポイント(breakpoint)という。


実例

mediaquery.gif

メディアクエリを使うことで画面の幅によって適用するcssを切り替えることができる。

.html
<!-- headタグの記述にviewport必須 --><metaname="viewport"content="width=device-width, initial-scale=1.0"><!-- bodyタグの記述 --><divclass="elem1 media"><p>メディアクエリを使った画面サイズ毎のcssの適用</p></div>
.css
.media{height:20%;background:red;min-width:60px;max-width:50%;font-size:12px;color:white;padding:5px;}@mediascreenand(min-width:200px)and(max-width:400px){.media{/* 画面サイズ200~400px */}.media{background:gold;font-size:14px;color:gray;max-width:60%;}.media::before{content:"【200px~400px】";color:black;}}@mediascreenand(min-width:600px)and(max-width:800px){.media{/* 画面サイズ600~800px */}.media{background:yellowgreen;height:30%;font-size:20px;color:white;max-width:80%;}.media::before{content:"【600px~800px】";color:black;}}@mediascreenand(min-width:1000px){.media{/* 画面サイズ1000px以上 */}.media{background:cornsilk;height:40%;font-size:32px;color:darkgray;max-width:90%;}.media::before{content:"【1000px~】";color:black;}}
  • 後ろにある記述が優先される。

上記記述の場合、400px < 画面幅 < 600px は指定がないため、デフォルトのcssが適用される(ここではbackground 赤色)。


途切れない適用例

メディア特性でmin-widthを小さい順に記載すれば、画面サイズに合わせ順にcssを適用できる。

画面サイズ適用される処理
375px以下処理0
375px以上処理1
680px以上処理2
960px以上処理3
.css
.class{デフォルトの処理0}@mediascreenand(min-width:375px){/* 画面サイズ375px~ */.class{処理1}}@mediascreenand(min-width:680px){/* 画面サイズ680px~ */.class{処理2}}@mediascreenand(min-width:960px){/* 画面サイズ960px以上 */.class{処理3}}


参考リンク

mozilla メディアクエリの文法
mozilla @mediaの文法


Viewing all articles
Browse latest Browse all 8945

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>