メディアクエリとは
CSSの仕様の1つで、表示された画面の大きさによって、見栄えを切り替えられる機能のこと。
それによって、レスポンシブサイトを作ることが出来ます。
レスポンシブサイトとは
PCだけじゃなく、スマホでもタブレットでも綺麗に表示されるデザインですね。
ちなみに、今から12年前(今現在2022年)自分の周りは、全員ガラケーでした。(笑)
9年前、自分の周りは、自分以外全員スマホでした。(苦笑)
その3年間で、スマホが爆発的に普及したってことですね。
検索数でも、数年前にスマホの方がPCより多くなった様です。
今やスマホでも綺麗に表示されて当たり前という時代。
そのあたりも意識して、やらざるを得ないという訳です。
サイトの構成を考えよう
カラムとは
columnで、縦の列という意味です。
ちなみに、このサイトは右側3分の1に検索やカテゴリーを、左側3分の2に本記事を配置している2カラムの構成です。
ちなみに、横の列はロウ(row)と言います。
ブレイクポイント768pxの2カラムの簡単なレスポンシブサイトの作り方
画面サイズが768px以上の時のデザイン
画面サイズが767px以下の時のデザイン
html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>DEMO</title>
<meta name="description" content="実際にコードを書くことで、デザインや動きを確認するためのデモサイトです。">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div class="container">
<!-- ヘッダー -->
<header>
</header>
<!-- メイン -->
<main>
</main>
<!-- サイドバー -->
<aside>
</aside>
<!-- フッター -->
<footer>
</footer>
</div>
</body>
</html>
css
@charset "UTF-8";
body {
margin: 0;
}
/* 画面サイズ(768px~) */
@media screen and (min-width: 768px) {
.container {
display: grid; /* グリッドコンテナを作る */
width: 100%;
height: 100vh;
grid-template-rows: 100px 1fr 50px;
grid-template-columns: 3fr 1fr;
grid-template-areas: 'header header'
'main sidebar'
'footer footer';
}
}
/* 画面サイズ(~767px) */
@media screen and (max-width: 767px) {
.container {
display: grid; /* グリッドコンテナを作る */
width: 100%;
height: 100vh;
grid-template-rows: 50px 1fr 1fr 50px;
grid-template-columns: 1fr;
grid-template-areas: 'header'
'main'
'sidebar'
'footer';
}
}
/* ヘッダー */
header {
grid-area: header;
background-color: #fcc993;
}
/* メイン */
main {
grid-area: main;
background-color: #ffff93;
}
/* サイドバー */
aside {
grid-area: sidebar;
background-color: #93ffc9;
}
/* フッター */
footer {
grid-area: footer;
background-color: #c9ff93;
}
cssのbody {margin: 0;}
は、次の記事で説明します。
先日cssファイルに、body {margin: 0;}を書き込みました。 これを書き込まず、リセットcssも記載していなければ、Google Chromeブラウザの上下左右に白い隙間ができていると思います。 これを消していきます。 […]
@media screen and (min-width: 768px) {}
の部分は、画面サイズが768px以上の時のスタイルという意味です。
@media screen and (max-width: 767px) {}
の部分は、画面サイズが767px以下の時のスタイルという意味です。
gridは、この表のような書き方が、最も基礎的なものですね。
他にも書き方がありますし、大変便利な使い方もあります。
こちらのサイトが、その辺りをを詳しく説明してくれています。
一番分かりやすいCSS Grid Layoutの使い方ガイド | Web Design Trends
CSS Gridを使ったレスポンシブ対応の基本レイアウト | Webクリエイターボックス
さいごに
なるべく絶対単位pxよりも、%などの相対単位で書いていきたいですね。
あと、注意点が1つあります。
codeを変えても、デザインに反映されていない場合は、
これだけ要注意です。
今日は、ありがとうございました。では、また!