原生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 闭包引起的IE内存泄露分析
May 23 Javascript
ECMAScript 创建自己的js类库
Nov 22 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
Jul 18 Javascript
javascript如何动态加载表格与动态添加表格行
Nov 27 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
Vue常用的全选/反选的示例代码
Feb 19 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 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
人族 Terran 魔法与科技
2020/03/14 星际争霸
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
Ext 今日学习总结
2010/09/19 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
学前教育毕业生自荐信
2013/10/29 职场文书
初一英语教学反思
2014/01/11 职场文书
音乐教学案例
2014/01/30 职场文书
会计师事务所实习证明
2014/11/16 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python