美文网首页
JS实现瀑布流

JS实现瀑布流

作者: 程序猿某人_ | 来源:发表于2017-01-15 22:52 被阅读0次

用js实现瀑布流代码,实现下拉过程中图片的自动加载:
效果如下:

![]98]ZI}Y[~1]WE9OFBV}}VA.png](https://img.haomeiwen.com/i2618457/922595fae5cfca8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

简易目录:

O2AVO_B7(`L4]MB{`6KO4@F.png

下边是js代码:

window.onload = function(){
    imgLocation('container','box');
    var imgData = {"data":[{'src':"02.jpg"},{'src':"03.jpg"},{'src':"05.jpg"},{'src':"06.jpg"}]}
    window.onscroll = function(){
         if(checkFlag()){
            var cparent = document.getElementById('container');
            for(var i=0;i<imgData.data.length;i++){
                var ccontent = document.createElement("div");
                ccontent.className="box";
                cparent.appendChild(ccontent);
                var boxing = document.createElement('div');
                boxing.className = "img_box";
                ccontent.appendChild(boxing);
                var img = document.createElement('img');
                img.src = "images/" + imgData.data[i].src;
                boxing.appendChild(img);
            }
            imgLocation('container','box');
         }
    }
}

function checkFlag(){
    var cparent = document.getElementById('container');
    var ccontent = getChildElement(cparent,"box");
    var lastContentHeight = ccontent[ccontent.length-1].offsetTop;
    var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
    var pageHeight = document.documentElement.clientHeight||document.body.clientHeight;
    //console.log(lastContentHeight+":"+scrollTop+":"+pageHeight);
    if(lastContentHeight<scrollTop+pageHeight){
        return true;
    }
}

function imgLocation(parent,content){
    var cparent = document.getElementById(parent);
    var ccontent = getChildElement(cparent,content);
    var imgWidth = ccontent[0].offsetWidth;
    var cols = Math.floor(document.documentElement.clientWidth / imgWidth);
    cparent.style.cssText = "width:"+imgWidth*cols+"px;margin:0 auto;";

    var BoxHeightArr = [];
    for(var i=0;i<ccontent.length;i++){
        if(i<cols){
            BoxHeightArr[i] = ccontent[i].offsetHeight;
        }else{
            var minheight = Math.min.apply(null,BoxHeightArr);
            var minIndex = getimiheightLocation(BoxHeightArr,minheight);
        
            ccontent[i].style.position = 'absolute';
            ccontent[i].style.top = minheight+"px";
            ccontent[i].style.left = ccontent[minIndex].offsetLeft+'px';
            BoxHeightArr[minIndex] = BoxHeightArr[minIndex] + ccontent[i].offsetHeight;
        }
    }
}

function getimiheightLocation(BoxHeightArr,minheight){
    for(var i in BoxHeightArr){
        if(BoxHeightArr[i] == minheight){
            return i;
        }
    }
}

function getChildElement(parent,content){
    var contentArr = [];
    var allcontent = parent.getElementsByTagName("*");
    for(var i=0;i<allcontent.length;i++){
        if(allcontent[i].className==content){
            contentArr.push(allcontent[i]);
        }
    }
    return contentArr;
}

下边是css代码:

*{
    margin:0px;
    padding:0px;
}
#container{
    position: relative;
}
.box{
    padding: 5px;
    float: left;
}
.img_box{
    padding: 5px;
    border:1px solid #cccccc;
    border-radius: 5px;
    box-shadow: 0 0 5px #ccc;
}
.img_box img{
    width:150px;
    height:auto;
}

下边是静态页面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<script type="text/javascript" src="app.js"></script>
<body>
    <div id="container">
        <div class="box">
            <div class="img_box">
                ![](images/01.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/02.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/03.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/04.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/05.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/06.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/07.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/08.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/09.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/10.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/11.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/12.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/13.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/14.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/15.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/16.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/17.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/18.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/19.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/20.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/21.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/22.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/23.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/24.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/25.jpg)
            </div>
        </div>
        <div class="box">
            <div class="img_box">
                ![](images/26.jpg)
            </div>
        </div>
    </div>
</body>
</html>  

相关文章

  • js/jQuery实现瀑布流

    html中主要代码: 实现瀑布流的js代码: css实现瀑布流只需要三行代码: 实现下拉刷新的js代码: js/c...

  • JS实现瀑布流

    用js实现瀑布流代码,实现下拉过程中图片的自动加载:效果如下: ![]98]ZI}Y[~1]WE9OFBV}}VA...

  • JS 实现瀑布流

    在极客学院下载的 JS 基础视屏中提到了瀑布流效果,花了一下午的时间去学习,到现在终于也算有所理解了,自己也动手实...

  • Js实现瀑布流

    1.使用原生js实现瀑布流效果,demo地址(https://xukeler.github.io/waterfal...

  • JavaScript实现瀑布流效果

    在极客学院下载的js基础视频中学习到了用js实现瀑布流效果,然后自己总结了两个关键的点,一个是瀑布流效果的实现,另...

  • 瀑布流布局

    1: 实现一个瀑布流布局效果 code 2 : 实现一个新闻瀑布流新闻网站 http://js.jirengu.c...

  • 小程序 瀑布流布局 简单易懂 css 及js 两种方法

    css 自带标签 实现瀑布流 有一定的缺陷 建议使用js...

  • 使用js来实现瀑布流效果

    使用js来实现瀑布流效果 瀑布流的实现方法有很多种,我这次采用的是使用绝对定位的方法来实现。页面中包含一个容器ul...

  • js实现瀑布流效果

    瀑布流的特点:宽度确定,高度不确定;通过定位处理的。 每一行添加在高度最低的下面 绝对定位left:图片的宽度*索...

  • 原生js实现瀑布流

    浏览网页的时候经常会遇到瀑布流布局的网站。也许有些读者不了解瀑布流。瀑布流,又称瀑布流式布局。是比较流行的一种网...

网友评论

      本文标题:JS实现瀑布流

      本文链接:https://www.haomeiwen.com/subject/yosubttx.html