原生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 相关文章推荐
不错的新闻标题颜色效果
Dec 10 Javascript
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
angular 内存溢出的问题解决
Jul 12 Javascript
基于Vue插入视频的2种方法小结
Apr 02 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
PHP与SQL注入攻击[三]
2007/04/17 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
非主流的textarea自增长实现js代码
2011/12/20 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
小学语文教学反思
2014/02/10 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
倡议书格式模板
2014/05/13 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
《角的度量》教学反思
2016/02/18 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
go设置多个GOPATH的方式
2021/05/05 Golang
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python