原生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 相关文章推荐
JQuery里选择超链接的实现代码
May 22 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
Jul 05 Javascript
JavaScript动态插入script的基本思路及实现函数
Nov 11 Javascript
JS二维数组的定义说明
Mar 03 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 Javascript
深入浅析vue组件间事件传递
Dec 29 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 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
如何开发一个虚拟域名系统
2006/10/09 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python 判断自定义对象类型
2009/03/21 Python
python将人民币转换大写的脚本代码
2013/02/10 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
python编写猜数字小游戏
2019/10/06 Python
python字符串的拼接方法总结
2019/11/18 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
优秀生推荐信范文
2013/11/28 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
材料化学专业求职信
2014/07/15 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
学校证明范文
2015/06/24 职场文书
道士塔读书笔记
2015/06/30 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
python tqdm用法及实例详解
2021/06/16 Python