原生js实现瀑布流效果


Posted in Javascript onMarch 09, 2020

本文实例为大家分享了js实现瀑布流效果的具体代码,供大家参考,具体内容如下

CSS样式:

<style>
 .cont{margin: 0 auto;position: relative;}
 .box{float: left;padding: 5px;}
 .imgbox{border: black solid 1px;padding: 5px;border-radius: 5px;}
 .imgbox img{width: 200px;display: block;}
</style>

HTML结构:

<div class="cont">

 <div class="box">
 <div class="imgbox">
 <img src="img/1.jpg" >
 </div>
 </div>
 //......此处省略雷同代码
 <div class="box">
 <div class="imgbox">
 <img src="img/2.jpg" >
 </div>
 </div>
 
</div>

JavaScript代码:

<script>
 onload = function(){
 var wf = new WaterF();
 wf.init();
 }
 class WaterF{
 constructor(){
 this.clientW = document.documentElement.clientWidth;
 this.abox = document.querySelectorAll(".box");
 this.cont = document.querySelector(".cont");
 }
 init(){
 this.maxNum = parseInt(this.clientW / this.abox[0].offsetWidth);
 this.cont.style.width = this.maxNum * this.abox[0].offsetWidth + "px";

 this.firstLine();
 this.otherLine();
 }
 firstLine(){
 this.heightArr = [];
 for(var i=0;i<this.maxNum;i++){
 this.heightArr.push(this.abox[i].offsetHeight);
 }
 }
 otherLine(){
 for(var i=this.maxNum;i<this.abox.length;i++){
 var min = Math.min(...this.heightArr);
 var minIndex = this.heightArr.indexOf(min);
 this.abox[i].style.position = "absolute";
 this.abox[i].style.top = min + "px";
 this.abox[i].style.left = minIndex * this.abox[0].offsetWidth + "px";
 this.heightArr[minIndex] = this.heightArr[minIndex] + this.abox[i].offsetHeight;
 }
 }
 }
</script>

小编还为大家准备了精彩的专题:瀑布流布局汇总

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

Javascript 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
javascript+mapbar实现地图定位
Apr 09 Javascript
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
May 17 Javascript
ashx文件获取$.ajax()方法发送的数据
May 26 Javascript
详解Vue自定义过滤器的实现
Jan 10 Javascript
Vue.js2.0中的变化小结
Oct 24 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
原生JS实现贪吃蛇小游戏
Mar 09 #Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 #Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 #Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 #Javascript
JS中的const命令你真懂它吗
Mar 08 #Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 #Javascript
Vue vm.$attrs使用场景详解
Mar 08 #Javascript
You might like
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
详解YII关联查询
2016/01/10 PHP
PHP基本语法实例总结
2016/09/09 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
Python类class参数self原理解析
2020/11/19 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
成品仓管员工作职责
2013/12/29 职场文书
关于环保的建议书400字
2014/03/12 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
参观邀请函范文
2015/02/02 职场文书
预备党员介绍人意见
2015/06/01 职场文书
公司会议开幕词
2016/03/03 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python