原生js实现瀑布流效果

 更新时间:2020年03月09日 10:20:29   作者:Tangerine.  
这篇文章主要为大家详细介绍了原生js实现简单瀑布流效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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取得键盘按下方向键是哪个的方法

    这篇文章主要介绍了JavaScript取得键盘按下方向键是哪个的方法,涉及javascript针对键盘按键事件的判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript中六种面试常考继承方式总结

    JavaScript中六种面试常考继承方式总结

    js的几种继承方式在我们面试的时候经常会被问到,所以深入理解js几种继承方式以及它们的优缺点是非常有必要的。本文为大家整理了JavaScript中面试常考的六种继承方式,需要的可以参考一下
    2023-02-02
  • JS实现简单的天数计算器完整实例

    JS实现简单的天数计算器完整实例

    这篇文章主要介绍了JS实现简单的天数计算器,结合完整实例形式分析了javascript针对日期的获取及天数运算相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • JavaScript中的await函数使用小结

    JavaScript中的await函数使用小结

    async 函数是 AsyncFunction 构造函数的实例,并且其中允许使用 await 关键字,async 和 await 关键字让我们可以用一种更简洁的方式写出基于 Promise 的异步行为,而无需刻意地链式调用 promise,这篇文章主要介绍了JavaScript中的await,需要的朋友可以参考下
    2024-01-01
  • 深度剖析JavaScript作用域从局部到全局一网打尽

    深度剖析JavaScript作用域从局部到全局一网打尽

    这篇文章主要为大家介绍了JavaScript作用域的深度剖析,从局部到全局一网打尽,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 微信小程序前端源码逻辑和工作流

    微信小程序前端源码逻辑和工作流

    这篇文章主要介绍了微信小程序前端源码逻辑和工作流 的相关资料,本文还给大家提供了文本基本结构图和实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • JS+CSS实现仿支付宝菜单选中效果代码

    JS+CSS实现仿支付宝菜单选中效果代码

    这篇文章主要介绍了JS+CSS实现仿支付宝菜单选中效果代码,涉及JavaScript基于鼠标事件动态设置页面css样式的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)

    页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)

    下面小编就为大家带来一篇页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JS ES新特性 扩展运算符介绍

    JS ES新特性 扩展运算符介绍

    这篇文章主要介绍了JS ES新特性 扩展运算符,下面文章围绕ES新特性 扩展运算符的相关资料展开详细内容,需要的朋友可以参考一下,希望对大家有所帮助
    2021-12-12
  • 浅谈ES6新增的数组方法和对象

    浅谈ES6新增的数组方法和对象

    下面小编就为大家带来一篇浅谈ES6新增的数组方法和对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论