CSS
小学生必見!CSSのレスポンシブ対応のやり方について
今日はCSSのレスポンシブ対応について説明するよ。
先生!レスポンシブ対応ってなんですか?
ウェブサイトをパソコンやスマートフォンなど、いろんなデバイスで見たときに、そのデバイスに合わせてCSSを変えて表示させることを言います。
へー、そうなんですね。でも、どうやって変えていくんですか?
CSSの「メディアクエリ」という機能を使って変えていくんだよ。くわしくお話するからよく聞いてね。
わかりました!
CSSのレスポンシブ対応とは?
今はスマートフォンやタブレット、パソコンといろんなデバイスが使われていますよね?
モニターの幅がばらばらなので、どの幅でもなるべくきれいに見えるように、WEBサイトの見た目を整えてあげる必要があります。
そこで、CSSでモニターの幅をチェックし、「この幅ならこのCSS、こちらの幅だったらこのCSS」といったぐあいに、モニターの幅に合わせてCSSが変わるように書くことができます。
これがレスポンシブ対応です。
レスポンシブ対応の書き方
まずはHTMLファイルのheadタグ内に下のコードを書きます。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
ここの「viewport」とは、ブラウザでWEBサイトが表示されている画面のことを言います。
「width=device–width」は、幅はデバイスの幅に合わせてね、という意味です。
「initial–scale=1.0」は、特に何もしないなら1倍の大きさで表示してね、という意味です。
この1行は変わらず入れるものなので、コピペしてOKです。
つぎに「メディアクエリ」を書いていきます。
メディアクエリの書き方
メディアクエリは下のように書きます。
@media screen and (max-width: 768px) {
/* この中にCSSを書きます。*/
}
「@media」は、これからメディアクエリを書きますよ、という意味ですね。
「screen」は、PCやスマホの画面について、という意味です。
「max–width: 768px」は、画面の幅が最大で768px、という意味です。
つまり、画面幅が768px以内のときは、この中に書かれたCSSを使うよ、ということになります。
たとえば、
@media screen and (max-width: 768px) {
body {
background-color: #ff0000;
}
}
と書いてみましょう。
下の動画みたいにブラウザがタブレットくらいのサイズになると、背景の色が赤になります。
もうひとつ、別の書き方があります。
@media screen and (min-width: 600px) {
/* この中にCSSを書きます。 */
}
さっきと違うのは、「min–width: 600px」となっています。
これは、画面の幅が最小で600pxまでという意味です。
つまり、画面幅が600px以上のときは、この中に書かれたCSSを使うよ、ということになります。
たとえば
@media screen and (min-width: 600px) {
p {
font-size: 40px;
}
}
と書いてみましょう。
したの動画のようにスマホサイズから画面幅を広げると、文字が大きくなることがわかります。
max–widthとmin–widthをいつ、どうやって使えばいいの?
さて、ここでよく聞かれる質問があります。
「メディアクエリの書き方はわかったけど、max-widthとmin-widthはいつ、どういうときに使うんですか?」
2つの書き方があるので、どっちを使えばいいか、迷いますよね。
答えは、
- スマホからCSSを書き始めたのなら、min-widthを使う
- PCからCSSを書き始めたのなら、max-widthを使う
メディアクエリを使う前にCSSを書くときに、スマホでの見え方を先に書いていった場合はmin-widthを使いましょう。
/* メディアクエリ使ってないここには、スマホ用のCSSが書いてある */
@media screen and (min-width: 600px) {
/* ここにタブレット用のCSSを書く */
}
@media screen and (min-width: 900px) {
/* ここにPC用のCSSを書く */
}
上のように最初にスマホ用のCSSを書いたなら、次のメディアクエリでは「min-width: 600px」として、タブレット用のCSSを書きます。
その後で、「min-width: 900px」と、PC用のCSSを書きます。
逆にPC用のCSSから書き始めた場合は、max-widthを使います。
/* メディアクエリを使ってないここには、PC用のCSSが書いてある */
@media screen and (max-width: 900px) {
/* ここにはタブレット用のCSSを書く */
}
@media screen and (max-width: 600px) {
/* ここにはスマホ用のCSSを書く */
}
このように最初にPC用のCSSを書いた場合は、先に「max-width: 900px」でタブレット用を、
その後で「max-width: 600px」でスマホ用のCSSを書きます。
まとめ
このように「@media screen and (〜〜〜){ }」を使えば画面の幅によってCSSを変えることができます。
これがレスポンシブ対応です。
次回は、実際にコードを書きながらレスポンシブ対応をみんなにもやってもらうので、がんばりましょうね!