CSS 瀑布流图片简易实现

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
	  .waterfall {
	    column-count: 3;
	    column-gap: 10px;
	  }
	  .waterfall-item {
	    break-inside: avoid;
	    margin-bottom: 10px;
	    display: block;
	  }
	  .waterfall-item img {
	    width: 100%;
	    height: auto;
	    display: block;
	  }
	</style>
  </head>
  <body>
    <div class="waterfall">
      <div class="waterfall-item">
        <img src="img1.jpg" alt="" />
      </div>
      <div class="waterfall-item">
        <img src="img2.jpg" alt="" />
      </div>
      <div class="waterfall-item">
        <img src="img3.jpg" alt="" />
      </div>
    </div>
  </body>
</html>

使用 float: left(float常规浮动,高度固定、不铺满)

html 复制代码
<style>
  .waterfall {
    display: block;
    margin-right: -10px;
    margin-bottom: -10px;
  }

  .waterfall-item {
    float: left;
    height: 300px;
    margin-right: 10px;
    margin-bottom: 10px;
  }

  .waterfall-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
</style>

使用 flex-wrap: wrap(flex常规浮动,高度固定)

html 复制代码
<style>
  .waterfall {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }

  .waterfall-item {
    flex: 1;
    height: 300px;
    min-width: 200px;
    max-width: 500px;
  }

  .waterfall-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
</style>

使用 column-count (列数固定,宽高自适应)

html 复制代码
<style>
  .waterfall {
    column-count: 3;
    column-gap: 10px;
  }
  .waterfall-item {
    break-inside: avoid;
    margin-bottom: 10px;
    display: block;
  }
  .waterfall-item img {
    width: 100%;
    height: auto;
    display: block;
  }
</style>

使用 Grid + grid-auto-flow: dense(列数变化,宽高自适应,每个item宽高相等)

html 复制代码
<style>
  .waterfall {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    grid-auto-rows: 200px;
    grid-gap: 10px;
    grid-auto-flow: dense;
  }

  .waterfall-item {
    grid-row: span 1;
    overflow: hidden;
    border-radius: 8px;
  }

  .waterfall-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
</style>

想要高可控效果可借助 javascrpit 脚本实现,列如:MasonryIsotopeJustified-GalleryPackerybricks.jsflexImagesjQuery-flexImageswaterfall

相关推荐
linsk19986 小时前
妙用:focus解决0到auto高度过渡的边界场景
css3
CharlesYu016 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
平头哥技术团队7 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰8 小时前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面8 小时前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方9 小时前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结9 小时前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言9 小时前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒10 小时前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机10 小时前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生