Web白描

Webデザインの勉強 - 演習

display: grid; を理解する

display: grid; を理解する

grid の特徴
  • あらかじめ決められた枠の中にアイテムを並べるレイアウトにむいている
  • 枠の中を縦横のグリッド線で区切られたエリア枠を設定しアイテムを並べる「二次元のレイアウト手法」
  • レイアウトのための div要素は不要

flexbox の特徴
  • 一方向の軸に沿ってアイテムを並べる「一次元のレイアウト手法」
  • 常に決められた軸の方向に沿ってアイテムが並ぶ特徴があるため、要素の追加・削除などの変更もしやすい

現実的な使い方

  • flexboxと同様に、親要素と子要素の関係を利用してマルチデバイス対応をシンプルに記述する
例:画像を横並び

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gridで横並び</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
  <ul>
    <li>
      <img src="img/01.webp" alt="">
      <p>左の画像の説明</p>
    </li>
    <li>
      <img src="img/02.webp" alt="">
      <p>中央の画像の説明</p>
    </li>
    <li>
      <img src="img/03.webp" alt="">
      <p>右の画像の説明</p>
    </li>
  </ul>
</div><!-- /.container -->
</body>
</html>
@charset "UTF-8";

/*----------------------------------------
  reset
----------------------------------------*/
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul {
  list-style: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}

/*----------------------------------------
  layout
----------------------------------------*/
.container {
  width: min(90%, 960px);
  margin: 50px auto;
}

/*----------------------------------------
  gallery
----------------------------------------*/
ul {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
p {
  margin-top: 10px;
  text-align: center;
}
例:dlを横並び

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>dlの横並び</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
  <dl>
    <dt>HTML</dt>
    <dd>Webページの文章構造を記する言語</dd>
    <dt>CSS</dt>
    <dd>Webページの視覚的表現を行う言語</dd>
    <dt>JavaScript</dt>
    <dd>Webページの変化や動きを表現する言語</dd>
  </dl>
</body>
</html>
@charset "UTF-8";

/*----------------------------------------
  reset
----------------------------------------*/
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul {
  list-style: none;
}
img {
  max-width: 100%;
  vertical-align: bottom;
}

/*----------------------------------------
  dl
----------------------------------------*/
dl {
  display: grid;
  grid-template-columns:  10em 1fr;
  width: 600px;
  margin: 30px auto;
}
dt, dd {
  border-bottom: 1px solid #999;
  line-height: 3.0;
}