CSS解説 メディアクエリ
PC用にホームページを作っていると、スマホで見た時に、文字が小さく、画面も広すぎるため、見にくいサイトになっていまします。

PCで見た時はPC用のCSSレイアウト、スマホで見た時にはスマホ用のCSSレイアウトを使用するのに役に立つのが、メディアクエリです。

見る人の画面サイズやブラウザによって適した表示を行う「レスポンシブウェブデザイン」に使用される方法の一つですね。

はい。例えば、画面の解像度によって、使用するCSSを変える場合は、以下のように書きます。 通常は<head>~</head>内に書きます。

<head> <link rel="stylesheet" href="../css/mobile_style.css" type="text/css"
media="screen and (max-width: 1199px)">
<link rel="stylesheet" href="../css/pc_style.css" type="text/css"
media="screen and (min-width: 1200px)"> </head>
このコードは、解像度が1199px以下であったならば、「mobile_style.css」を参照し、1200px以上であったならば、「pc_style.cs」を参照するようにしています。

スマホの画面サイズって、どれくらい?

例えばi-phone13だと「2,532 x 1,170」、Galaxy A22だと「1,560×720」、arrows We F-51Bだと「1,520×720」みたい。

いちじくのPCは~ 「1920×1080」!!

そうなの。

・・・うん。 あれ?メディアクエリに指定した1199pxとか1200pxとかって、縦と横のどちらの数値?

「width」と書いているから横の解像度だね。 なので、1200pxの指定だと、最近のほとんどのスマホは横向きでサイトを表示すると、PCのサイトが表示されるね。

インターネットを見る時、スマホは縦向きで見ることが多いから、縦向きで見た時にスマホ用の表示がされればいいかな。

最適な解像度の値を考えるのも、結構難しいね。

ねー

今まで説明したのが、外部参照するCSSファイルそのものを解像度によって変える方法ですが、直接CSSにどの解像度の時は、どのスタイルを適用するかを指定することもできます。

下のコードは、CSS内に直接記載して、「500px」以下、「500px~1199px」の間、その他の解像度で、適用するレイアウトを変えるようにしています。

p {
font-size: medium;
}
@media screen and (min-width:500px) {
p {
font-size: large;
}
@media screen and (min-width:500px) and ( max-width:1199px) {
p {
font-size: small;
}
@media以外のところは普通に読み込まれます。また、CSSは下に書いたものが優先されるので、@mediaに該当する場合だけ、別のスタイルにして、それ以外は通常のCSSにするという使い方ができますね。

今回のメディアクエリの説明は以上です。うまく考えて、有効的に使っていきたいですね。

お名前