如何仅使用flexbox制作自适应图像网格?

时间:2019-04-30 19:28:33

标签: html css image flexbox responsive-images

我正在开始我的第一个完整的网站项目,已经学习HTML和CSS已有大约一个月了,而我刚学完flexbox的基础知识。我想知道是否有可能创建一个图像网格,当仅使用flexbox调整浏览器窗口大小时,图像会自动调整自身大小,这就是我目前所知道的一切。

我要重新创建的是this。左侧是一幅大图像,而右侧则是彼此堆叠的两个较小图像。当我缩小浏览器时,图像会保留在原位,并自动调整其大小。如果您想实时查看,请查看website。向下滚动直到看到它。

这是我对jsfiddle的糟糕尝试。由于某种原因,jsfiddle无法按照它们在我的计算机上显示的方式进行显示。计算机上的图像是并排的,就像我想要的那样,但是如果我调整窗口的大小,它会跳到下一行。

对于那些不想使用jsfiddle的人,这里是相关的HTML和CSS。我知道那是一团糟。

HTML:

/* Section: Gallery */

#gallery {
  display: flex;
  flex-wrap: wrap;
  background: rgb(252, 246, 237);
  text-align: center;
}

.coffee-img-1 {
  width: 500px;
  padding: 1.5rem;
  margin-right: 5rem;
  margin-top: 2rem;
  max-width: 100%;
  height: auto;
}

.coffee-img-2,
.coffee-img-3 {
  width: 400px;
  padding: 30px;
  max-width: 100%;
  height: auto;
}

.column {
  flex: 50%;
  padding: 1.5rem;
}

#gallery img:hover {
  animation-name: opacity-hover;
  animation-duration: 300ms;
  animation-fill-mode: forwards;
}

@keyframes opacity-hover {
  100% {
    opacity: 0.9;
  }
}
<!-- Gallery -->
<section id="gallery">
  <div>
    <img class="coffee-img-1" src="https://i.imgur.com/58DZwQ2.jpg" alt="Table with coffee and pastries">
  </div>
  <div class="column">
    <img class="coffee-img-2" src="https://i.imgur.com/hsSn85u.jpg" alt="Barista pulling two espresso shots">
    <img class="coffee-img-3" src="https://i.imgur.com/nmAId6V.jpg" alt="Barista brewing coffee with aeropress">
  </div>
</section>

1 个答案:

答案 0 :(得分:0)

在您的示例中,您忘记将类column添加到第一个div中。像这样:

<!-- Gallery -->
<section id="gallery">
  <div class="column">
    <img class="coffee-img-1" src="https://i.imgur.com/58DZwQ2.jpg" alt="Table with coffee and pastries">
  </div>
  <div class="column">
    <img class="coffee-img-2" src="https://i.imgur.com/hsSn85u.jpg" alt="Barista pulling two espresso shots">
    <img class="coffee-img-3" src="https://i.imgur.com/nmAId6V.jpg" alt="Barista brewing coffee with aeropress">
  </div>
</section>

要实现此行为,您可以将width的{​​{1}}属性更改。 max-width属性强制固定宽度,而width(和max-width)说:“嘿,即使我的图片大于它的尺寸,它也会调整为最大宽度{{1 }}“

示例:

https://codepen.io/icaromh/pen/jRopmp

文档:

https://developer.mozilla.org/en-US/docs/Web/CSS/max-width

https://developer.mozilla.org/en-US/docs/Web/CSS/min-width