0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【フロントエンド1000本ノック】0061_Grid Layoutを使い、Pinterestのようなカードが並ぶ可変グリッドレイアウトを作成せよ。

Posted at

この記事は人間が書きました

はじめに

こんにちは、赤神です!
この記事は、「1000本ノック」という取り組みの中のフロントエンドのための課題の1つです。

「1000本ノックとは」
https://qiita.com/sora_akagami/items/c8da4296dea3823376ca

Masonryレイアウト

Pinterest のようなレイアウトは「Masonry(石積み)レイアウト」と呼ばれます。高さが異なるカードがレンガのように隙間なく詰められて配置されるのが特徴です。

これを CSS だけで完璧に実装するのは少し難しくなります。しかし、Grid の機能を使うことで、非常に近いレイアウトを再現することができます。

鍵となるのは、非常に細かい行をたくさん作り、各アイテムが自身の高さに応じて、必要な数の行をまたぐという考え方です。

作成したコード

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>フロントエンド1000本ノック 0061</title>
  <style>
    .card-1 { grid-row-end: span 8; border: 2px solid #e74c3c; padding: 10px; background-color: #f8f9fa; }
    .card-2 { grid-row-end: span 12; border: 2px solid #3498db; padding: 10px; background-color: #f8f9fa; }
    .card-3 { grid-row-end: span 3; border: 2px solid #2ecc71; padding: 10px; background-color: #f8f9fa; }
    .card-4 { grid-row-end: span 7; border: 2px solid #f39c12; padding: 10px; background-color: #f8f9fa; }
    .card-5 { grid-row-end: span 15; border: 2px solid #9b59b6; padding: 10px; background-color: #f8f9fa; }
    .card-6 { grid-row-end: span 4; border: 2px solid #e67e22; padding: 10px; background-color: #f8f9fa; }
    .card-7 { grid-row-end: span 9; border: 2px solid #1abc9c; padding: 10px; background-color: #f8f9fa; }
    .card-8 { grid-row-end: span 6; border: 2px solid #34495e; padding: 10px; background-color: #f8f9fa; }
    .card-9 { grid-row-end: span 11; border: 2px solid #e91e63; padding: 10px; background-color: #f8f9fa; }
    .card-10 { grid-row-end: span 2; border: 2px solid #607d8b; padding: 10px; background-color: #f8f9fa; }
    .card-11 { grid-row-end: span 13; border: 2px solid #795548; padding: 10px; background-color: #f8f9fa; }
    .card-12 { grid-row-end: span 5; border: 2px solid #ff5722; padding: 10px; background-color: #f8f9fa; }
  </style>
</head>
<body style="display: flex; flex-direction: column; min-height: 100vh;">

  <header style="display: flex; justify-content: space-between; align-items: center;">
    <div>
      <a href="/">
        <img src="img/logo.png" alt="フロントエンド1000本ノック">
      </a>
    </div>
  </header>

  <div style="display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); grid-auto-rows: 10px;">
    <div class="card-1">1</div>
    <div class="card-2">2</div>
    <div class="card-3">3</div>
    <div class="card-4">4</div>
    <div class="card-5">5</div>
    <div class="card-6">6</div>
    <div class="card-7">7</div>
    <div class="card-8">8</div>
    <div class="card-9">9</div>
    <div class="card-10">10</div>
    <div class="card-11">11</div>
    <div class="card-12">12</div>
  </div>

  <footer>
    <p>Copyright 2025</p>
    <p>フロントエンド1000本ノック</p>
  </footer>

</body>
</html>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?