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 相关文章推荐
JS模拟面向对象全解(二、类型与赋值)
Jul 13 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
JS作用域链详解
Jun 26 Javascript
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
关于vue编译版本引入的问题的解决
Sep 17 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
40行代码把Vue3的响应式集成进React做状态管理
May 20 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(2)
2006/10/09 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
意外伤害赔偿协议书范本
2014/09/28 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
教师网络培训心得体会
2016/01/09 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
Python学习之时间包使用教程详解
2022/03/21 Python
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python