原生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显示选择目录对话框的代码
Nov 10 Javascript
通过JS来判断页面控件是否获取焦点
Jan 03 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
Bootstrap table使用方法详细介绍
Dec 09 Javascript
微信小程序 form组件详解及简单实例
Jan 10 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
JS实现拖动模糊框特效
Aug 25 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
Zend Guard一些常见问题解答
2008/09/11 PHP
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
RC4文件加密的python实现方法
2015/06/30 Python
Django视图和URL配置详解
2018/01/31 Python
python实现textrank关键词提取
2018/06/22 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
支部书记四风问题对照检查材料
2014/10/04 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
小学教师自我评价
2015/03/04 职场文书
从事会计工作年限证明
2015/06/23 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python