【ソースコード】番外編:行数が異なる画像の横並びの練習

目次

※コーディングの解説はCSSのコメントを参照

ディレクトリ構成

    
extra3
 ├─img
 │  ├─project1.jpg
 │  ├─project2.jpg
 │  ├─project3.jpg
 │  ├─project4.jpg
 │  ├─project5.jpg
 │  ├─project6.jpg
 │  └─project7.jpg
 │
 ├─css
 │  └─style.css
 │
 └─index.html
    
  

HTML(index.html)

別タブで開く
index.html

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>タイトル</title>
    <meta name="description" content="テキストテキストテキストテキストテキストテキスト">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
    <link rel="stylesheet" href="css/style.css">
  </head>

  <body>
    <div class="content">
      <h2 class="title">PROJECT</h2>
      <div class="flex">
        <div class="left">
          <img src="img/project1.jpg" alt="">
        </div>
        <ul class="right">
          <li><img src="img/project2.jpg" alt=""></li>
          <li><img src="img/project3.jpg" alt=""></li>
          <li><img src="img/project4.jpg" alt=""></li>
          <li><img src="img/project5.jpg" alt=""></li>
          <li><img src="img/project6.jpg" alt=""></li>
          <li><img src="img/project7.jpg" alt=""></li>
        </ul>
      </div>
    </div>
  </body>
</html>

CSS(style.css)

別タブで開く
style.css

@charset "UTF-8";

html {
  font-size: 100%;
}
img {
  max-width: 100%;
  /* 画像の下にできる隙間を削除 */
  vertical-align: bottom;
}
ul {
  /* リストの先頭にマーカーを表示しない */
  list-style: none;
}

.content {
  max-width: 1200px;
  padding: 0 20px;
  margin: 100px auto;
}
.title {
  font-size: 1rem;
  font-weight: normal;
  margin-bottom: 80px;
}
.flex {
  display: flex;
}
.flex .left {
  width: 40%;
}
/*
align-content: space-between;
均等配置にして上下を揃える
*/
.flex .right {
  width: 60%;
  display: flex;
  align-content: space-between;
  flex-wrap: wrap;
}
/*
「width: calc(100%/3);」で横幅を3等分した後、
「padding-left: 12px;」で左側にパディングを設定
*/
.flex .right li {
  width: calc(100%/3);
  padding-left: 12px;
}

/*-------------------------------------------
SP
-------------------------------------------*/
@media screen and (max-width: 900px) {
  /*
  左側の画像と右側の画像を縦に並べる
  */
  .flex {
    flex-direction: column;
  }
  .flex .left {
    width: 100%;
    padding-bottom: 12px;
  }
  .flex .right {
    width: 100%;
  }
  /*
  「width: 50%;」で右側の画像は2列に並べる
  */
  .flex .right li {
    width: 50%;
    padding: 0 0 12px 0;
  }
  /*
  奇数番目の画像は右にパディングを設定
  */
  .flex .right li:nth-child(odd) {
    padding-right: 6px;
  }
  /*
  偶数番目の画像は左にパディングを設定
  */
  .flex .right li:nth-child(even) {
    padding-left: 6px;
  }
}