JS实现瀑布流布局


Posted in Javascript onOctober 21, 2017

本文实例为大家分享了JS实现瀑布流布局展示的具体代码,供大家参考,具体内容如下

html部分

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>瀑布流布局</title>
  <script src="wallpoll.js"></script>
  <link rel="stylesheet" href="wallpoll.css" rel="external nofollow" >
</head>
<body>
  <div id="main">
    <div class="box">
      <div class="pic">
        <img src="wallpoll/0.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/0.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/1.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/2.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/3.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/4.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/5.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/6.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/7.jpg" alt="">
      </div>
    </div>

    <div class="box">
      <div class="pic">
        <img src="wallpoll/8.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/9.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/10.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/11.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/12.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/13.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/14.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/15.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/16.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/17.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/18.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/19.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/20.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/21.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/22.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/23.jpg" alt="">
      </div>
    </div>
    <div class="box">
      <div class="pic">
        <img src="wallpoll/24.jpg" alt="">
      </div>
    </div>
  </div>
</body>
</html>

css部分

*{
  padding:0px;
  margin:0px;
}
.main{
  position:relative;
}
.box{
  padding:15px 0 0 10px;
  float:left;
}
.pic{
  padding:10px;
  border: 1px solid #ccc;
  border-radius: 5px;
  box-shadow: 0 0 5px #ccc;
  /*float:left;*/
}
img{
  width:170px;
  height:auto;
}

JS部分

window.onload=function(){
  waterfall('main','box');
  var dataInt={"data":[{"src":"0.jpg"},{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"}]}
  window.onscroll=function(){
    if(checkScrollSlide){
      for(var i=0;i<dataInt.data.length;i++){
        var oparent=document.getElementById("main");
        var box=document.createElement("div");
        box.className="box";
        oparent.appendChild(box);
        var pic=document.createElement("div");
        pic.className="pic";
        box.appendChild(pic);
        var img=document.createElement("img");
        img.src="wallpoll/"+dataInt.data[i].src;
        pic.appendChild(img);
      }
    }
    waterfall('main','box');
  }
}
function waterfall(parent,child){
  var oparent=document.getElementById(parent);
  var boxs=oparent.getElementsByClassName(child);
  var boxw=boxs[0].offsetWidth;
  var cols=Math.floor(document.documentElement.clientWidth/boxw);
  oparent.style.cssText="width:"+cols*boxw+"px;margin:0 auto";
  var harr=new Array();
  for(var i=0;i<boxs.length;i++){
    if(i<cols){
      harr.push(boxs[i].offsetHeight);
     }else{
      var minH=Math.min.apply(null,harr);
      var index=getMinhIndex(harr,minH);
      boxs[i].style.position="absolute";
      boxs[i].style.top=minH+"px";
      boxs[i].style.left=boxs[index].offsetLeft+"px";
      harr[index]+=boxs[i].offsetHeight;
    }
  }
}
function getMinhIndex(arr,val){
  for(var i in arr){
    if(arr[i]===val){
      return i;
    }
  }
}
function checkScrollSlide(){
  var oparent=document.getElementById("main");
  var boxs=oparent.getElementsByClassName("box");
  var lastBox=boxs[boxs.length-1];
  var height=lastBox.offsetTop+Math.floor(lastBox.offsetHeight/2);
  var scrollHeigth=document.documentElement.scrollTop || document.body.scrollTop;
  // console.log(scrollHeigth);
  var seeHeigth=document.documentElement.clientHeigth || document.body.clientHeigth;
  return seeHeigth+scrollHeigth>height?true:false;
}

课程地址。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript - HTML的request类
Jul 15 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
ie下$.getJSON出现问题的解决方法
Feb 12 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
浅谈Javascript Base64 加密解密
Dec 28 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
js实现Tab选项卡切换效果
Jul 17 #Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 #Javascript
js注册时输入合法性验证方法
Oct 21 #Javascript
angular4实现tab栏切换的方法示例
Oct 21 #Javascript
js Dom实现换肤效果
Oct 21 #Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 #Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 #Javascript
You might like
php IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
微信小程序签到功能
2018/10/31 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
怎样声明接口
2014/09/19 面试题
校长就职演讲稿
2014/01/06 职场文书
周年庆典答谢词
2015/01/20 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
员工安全责任协议书
2016/03/22 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
python中 .npy文件的读写操作实例
2022/04/14 Python