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 相关文章推荐
jquer之ajaxQueue简单实现代码
Sep 15 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
js实现的星星评分功能函数
Dec 09 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
Vue2.x中的父子组件相互通信的实现方法
May 02 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 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中sprintf与printf函数的用法及区别
2016/01/08 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python实现顺序表的简单代码
2018/09/28 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
什么是python的函数体
2020/06/19 Python
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
趣味运动会活动方案
2014/02/12 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
初中数学教学随笔
2015/08/15 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS