原生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 相关文章推荐
关于JavaScript中string 的replace
Apr 12 Javascript
jquery可见性过滤选择器使用示例
Jun 24 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
Highcharts使用简例及异步动态读取数据
Dec 30 Javascript
vue实现简单实时汇率计算功能
Jan 15 Javascript
php 修改密码实现代码
May 24 Javascript
简述JS控制台的使用
Jul 15 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 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
php Static关键字实用方法
2010/06/04 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
小谈php正则提取图片地址
2014/03/27 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
php文件缓存方法总结
2016/03/16 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
js对象的构造和继承实现代码
2010/12/05 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
Python urllib.request对象案例解析
2020/05/11 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
校园学雷锋活动月总结
2014/03/09 职场文书
中学清明节活动总结
2014/07/04 职场文书
三八妇女节寄语
2015/02/27 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
欧元符号 €
2022/02/17 杂记