原生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 操作Word和Excel的实现代码
Oct 26 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
Oct 31 Javascript
网页中表单按回车就自动提交的问题的解决方案
Nov 03 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
Nov 21 Javascript
移动端手指放大缩小插件与js源码
May 22 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
解决在Vue中使用axios用form表单出现的问题
Oct 30 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
Jul 28 Javascript
Vue看了就会的8个小技巧
Jan 21 Vue.js
详解Js模块化的作用原理和方案
Apr 29 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP文件上传原理简单分析
2011/05/29 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
javascript 打印页面代码
2009/03/24 Javascript
javascript实现数独解法
2015/03/14 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
vue实现信息管理系统
2020/05/30 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python实现线程状态监测简单示例
2018/03/28 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python通过http下载文件的方法详解
2019/07/26 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
护士自我鉴定范文
2013/10/06 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
五四青年节的活动方案
2014/08/20 职场文书
合伙经营协议书范本
2014/09/13 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
对照检查剖析材料
2014/09/30 职场文书