HTMLとCSSのメモ– デモページ

アスペクト比-サンプルコード

画像の縦横比率が異なる画像を正方形でサムネイル表示し、クリックすると画像を表示する例。
サムネイル画像は別途用意せず、縮小して表示する。
PCでは3列表示、スマホでは1列表示にする。
※サンプル表示では下記コード以外に表示用のCSSを追加しています

HTMLは共通。

HTML
<div class="image-wrap">
  <ul class="image-list">
    <li><a href="画像1パス" target="_blank"><figure><img src="画像1パス" alt=""></figure></a></li>
    <li><a href="画像2パス" target="_blank"><figure><img src="画像2パス" alt=""></figure></a></li>
    <li><a href="画像3パス" target="_blank"><figure><img src="画像3パス" alt=""></figure></a></li>
  </ul>
</div>

疑似要素(::before)を使ったサンプルコード

CSS
.image-wrap{
  width: 50%;
  max-width: 800px;
  margin: 0 auto;
}
.image-list{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: 10px;
  row-gap: 10px;
}
.image-list li figure{
  position: relative;
  width: 100%;
  overflow: hidden;
}
.image-list li figure::before{
  content: "";
  display: block;
  padding-top: 100%; /*アスペクト比 1:1*/
}
.image-list li figure img{
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media screen and (max-width:599px){
  .image-wrap{
    width: 100%;
  }
  .image-list{
    display: block;
    padding: 10px;
  }
  .image-list li + li{
    margin-top: 10px;
  }
}

aspect-ratioを使ったサンプルコード

CSS
.image-wrap{
  width: 50%;
  max-width: 800px;
  margin: 0 auto;
}
.image-list{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.image-list li figure{
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1/1; /*アスペクト比 1:1*/
  overflow: hidden;
}
.image-list li figure img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media screen and (max-width:599px){
  .sample_container{
    padding: 10px 0;
  }
  .image-wrap{
    width: 100%;
  }
  .image-list{
    display: block;
    padding: 0 10px;
  }
  .image-list li + li{
    margin-top: 10px;
  }
}

記事ページに戻る