flexbox布局-根据图片确定元素高度(类似瀑布流布局)

本文介绍了如何使用CSS Flexbox布局来实现一个动态调整元素高度的效果,特别是当元素内包含图片时,元素的高度将根据图片的最大高度进行自适应。这种布局类似于瀑布流,每行的图片区域高度由最高图片决定,而较矮的图片会在其区域内垂直居中。通过两层display: flex的嵌套应用,可以有效地实现这一需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先确定一下需求:多个元素,每个元素里有图片和一些文字等。每一行的图片区域高度根据最高图片决定,不够高的图片垂直居中
可以看下图中第一行图片较高,第二行图片较矮在这里插入图片描述
以上可通过多嵌套两层display:flex实现

先上代码结构

<ul class="parent">
   <li>
       <div class="img">
           <img src="./image/cat1.jpg" alt="">
       </div>
       <p class="price">like price</p>
   </li>
   <li>
       <div class="img">
           <img src="./image/cat2.jpeg" alt="">
       </div>
       <p class="price">like price</p>
   </li>
   。 
   。
   。
</ul>

解析都写里边 了

/* 列表父元素ul设置flex,子元素的align-items默认为stretch,即跟最高的元素等高 */
.box ul {
    display: flex;
    flex-wrap: wrap;
}
/* li设置纵向排列,子元素压缩不换行 */
.box ul li {
    display: flex;
    flex-direction: column;
}

/* 图片区域占余下的所有高度,并水平垂直居中 */
.box ul li .img {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
}

.box ul li img {
    width: 100%;
    /* 建议设置最小宽度,以防图片加载失败样式错乱 */
    min-height: 180px;
}
``


[全部代码在此,点击查看](https://github.com/WinnieWei0/flexbox-waterfall)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值