原生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 getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
Javascript数组中push方法用法分析
Oct 31 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
JS实现分页导航效果
Feb 19 Javascript
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
原生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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP 快速排序算法详解
2014/11/10 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
小程序云开发实战小结
2018/10/25 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
python数组过滤实现方法
2015/07/27 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
Python 查看文件的编码格式方法
2017/12/21 Python
Python读写docx文件的方法
2018/05/08 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
验房委托书
2014/08/30 职场文书
前台岗位职责
2015/02/13 职场文书