瀑布流效果

本文介绍了如何使用HTML、CSS和JavaScript创建瀑布流图片布局,包括设置column-count属性以实现六列显示,以及使用懒加载技术根据滚动位置动态加载更多图片。
摘要由CSDN通过智能技术生成

首先可以在body中预设一个模板

如下代码

<div id="box">
        <div class="box2">
            <img src="u=1669704037,1424149186&fm=253&fmt=auto&app=138&f=JPEG.webp" alt="" >
        </div>
    </div>

然后给模板加上样式

<style>
    *{
        margin: 0;
        padding: 0;
    }

    html,body{
        height: 100%;
        
    }
    
    #box{
        column-count: 6;
    }
    .box2{
        margin-bottom: 10px;
        break-inside: avoid; 
        height: 231px;
    }
    .box2 img{
            width: 100%;

        }
</style>

因为要做出瀑布流图片排列效果,所以要给大盒子加上一个column-count,并设置为6,然后图片宽度设为100%这样就可以让图片自动按比例平铺,并一行显示6列,最终达到瀑布流效果。

预设完模板之后就可以通过js的动态控制,将内容映射到模板中去。 代码如下

function renderHTML(arr){
            box.innerHTML += arr.map(function(item){
                return `<box class="box2">
                    <img src="${item.url}">
                </box>
                `
            }).join("")
        }

然后就是懒加载效果:

其最重要的就是要知道滚动条滑动的距离,保证满足加载触发的条件具体代码如下

 window.onscroll = function(){
            var listHeight = box.offsetHeight
            var listTop = box.offsetTop
            console.log(listHeight,listTop)
            var scrollTop = document.documentElement.scrollTop || document.body.scrollTop

            var windowHeight = document.documentElement.clientHeight

            console.log(Math.round(windowHeight+scrollTop))
            // Math.round(windowHeight+scrollTop)==(box.offsetHeight+box.offsetTop)
            // if(isloading) return
            if(Math.round(windowHeight+scrollTop+1)==(listHeight+listTop)
            ){
            // console.log("到底了")
            // isloading=true
            renderHTML(arr2)
            }
        }

效果如下

屏幕录制 2023-11-05 165912

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值