原生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中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
Oct 12 Javascript
深入理解javascript变量声明
Nov 20 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
Feb 14 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
javascript this指向相关问题及改变方法
Nov 19 Javascript
JavaScript数组 几个常用方法总结
Nov 11 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
如何使用Strace调试工具
2013/06/03 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
php取出数组单个值的方法
2018/03/12 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
犀利的js 函数集合
2009/06/11 Javascript
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
python self,cls,decorator的理解
2009/07/13 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
校本培训个人总结
2015/02/28 职场文书
2015年护士节慰问信
2015/03/23 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技