吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2600|回复: 25
收起左侧

[其他转载] 纯css单层div实现自适应瀑布流

[复制链接]
涛之雨 发表于 2022-7-27 23:20
本帖最后由 涛之雨 于 2022-7-27 23:33 编辑

github 代码:https://taozhiyu.github.io/waterfall/
demo:https://taozhiyu.github.io/waterfall/
演示:

(屏幕宽度不够就靠浏览器缩放凑的屑)

核心代码:

[HTML] 纯文本查看 复制代码
<style>
    .item {
        column-gap: 22px;/*每列间隔*/
        max-width: 1500px;/*最大宽度*/
        column-count: 4;/*默认四列*/
        margin: auto;/*宽屏时居中*/
    }
    /*适应屏幕宽度*/
    @media only screen and (max-width: 1904px) {.item {column-count: 4;}}/*其实这一行可以不写。。。因为默认就是4列*/
    @media only screen and (max-width: 1264px) {.item {column-count: 3;}}
    @media only screen and (max-width: 960px) {.item {column-count: 2;}}
    @media only screen and (max-width: 600px) {.item {column-count: 1;column-gap: 0;}}

    .item>.item__content {
        text-align: center;
        overflow: auto;
        /*overflow-x可以随意,但是y一定要auto,否则div会被截断*/
        /*如果特殊需要,可以在里面嵌套一层div限制高度,外层不要动*/
    }
</style>
<div class="item">
    <div class="item__content">1</div>
    <div class="item__content">2</div>
    <div class="item__content">3</div>
    <!--省略若干行->
</div>
<script type="text/javascript">
    // 修改随机颜色为了看起来更清楚,
    // 修改随机高度为了占位
    [...document.querySelectorAll(".item__content")].map(a=>{
        a.style.background = "#" + Math.random().toString(16).slice(2, 8)
        //随机颜色
        a.style.height = Math.floor(50 + Math.random() * 500) + "px"
        //随机高度
    });
</script>

免费评分

参与人数 10吾爱币 +17 热心值 +10 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
ichuang + 1 + 1 用心讨论,共获提升!
lzqsee + 1 + 1 虽然我看不懂,但是我的狗眼被你的动图闪瞎了!
Azad + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xiaosuobjsd + 1 + 1 涛大牛好大
溜玩音乐 + 1 + 1 谢谢@Thanks!
wrath + 1 + 1 我很赞同!
91mumu + 1 + 1 热心回复!
The-rapist + 2 + 1 涛大牛好牛&amp;amp;#128046;

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 涛之雨 发表于 2022-7-28 07:47
npc404 发表于 2022-7-28 00:09
这种方式有个缺点,图片的顺序是每列由上而下的,不是每行从左到右。以前想过有没有解决方案,不过最后没想 ...

没办法,主要想做的是自适应+纯css,每行从左到右其实也有问题,就是高度不一样很有可能某一个到第三个块了,另一个还是第一个瀑布流本来就适合做无序堆叠,但是这个确实有个很大的问题就是不适合动态添加。。。比较适合做数据的静态显示(数据个数和高度的变化会导致元素块漂移)
 楼主| 涛之雨 发表于 2022-7-28 15:25
极品小猫 发表于 2022-7-28 15:08
说实话,我个人其实非常不喜欢瀑布流,但是瀑布流在展示和推广时,效果却非常好

特别是热加载(虽然我这个不是很适合做热加载,这个只适合做静态数据显示,动态修改会导致有可能新生成的元素在上面)
npc404 发表于 2022-7-28 00:09
这种方式有个缺点,图片的顺序是每列由上而下的,不是每行从左到右。以前想过有没有解决方案,不过最后没想到放弃了

点评

没办法,主要想做的是自适应+纯css,每行从左到右其实也有问题,就是高度不一样很有可能某一个到第三个块了,另一个还是第一个瀑布流本来就适合做无序堆叠,但是这个确实有个很大的问题就是不适合动态添加。。。比较  详情 回复 发表于 2022-7-28 07:47
ysjd22 发表于 2022-7-28 06:12
好厉害,学到了。
lnshijia 发表于 2022-7-28 08:06
厉害,厉害
subney 发表于 2022-7-28 08:14
宽度一致, 而且竖排的话, 直接使用flex-row布局就可以了

点评

那应应该就不会换行了吧?我没有设置外层div的高度,主要就是这个问题没有解决,本来我也想做flex的。。。  详情 回复 发表于 2022-7-28 13:58
camyan 发表于 2022-7-28 08:16
学到了,厉害
堕落ぁ狼 发表于 2022-7-28 09:21
ggnb

学到了
imGz 发表于 2022-7-28 09:50
感谢分享
hrpzcf 发表于 2022-7-28 09:51
最近在学web,学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 03:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表