jQuery实现瀑布流布局

简介: (waterfall) 瀑布流布局是一种流行的网页布局方式,是指元素在页面的布局中像瀑布一样从上到下布局,即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。

 什么是瀑布流布局❓

(waterfall) 瀑布流布局是一种流行的网页布局方式,是指元素在页面的布局中像瀑布一样从上到下布局,即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。image.gif

🧩适用场景

image.gif

📄题目要求

image.gif

🧩html代码

<!DOCTYPE html><html><head><metacharset="UTF-8"><title>第四题-瀑布流</title><scriptsrc="js/jquery.min.js"></script><linkrel="stylesheet"href="css/style.css"></head><body><divclass="box"><ul><li><imgsrc="img/jx1.jpg"alt=""/></li><li><imgsrc="img/jx10.jpg"alt=""/></li><li><imgsrc="img/jx2.jpg"alt=""/></li><li><imgsrc="img/jx14.jpg"alt=""/></li><li><imgsrc="img/jx16.jpg"alt=""/></li><li><imgsrc="img/jx15.jpg"alt=""/></li><li><imgsrc="img/jx2.jpg"alt=""/></li><li><imgsrc="img/jx5.jpg"alt=""/></li><li><imgsrc="img/jx6.jpg"alt=""/></li><li><imgsrc="img/jx9.jpg"alt=""/></li></ul></div></body><scriptsrc="js/index.js"></script></html>

image.gif

🧩css代码

body,ul {
padding: 0;
margin: 0;
}
.box {
width: 100%;
}
.boxul {
width: 100%;
}
.boxulli {
position: absolute;
list-style: none;
border: 1pxsolid#ccc;
padding: 1%;
margin: 1%;
width: 31%;
box-sizing: border-box;
}
.boxulliimg {
display: block;
width: 100%;
}

image.gif

🧩js代码

$(function(){
pubuliu();
//随着窗口的大小变化重新执行函数// ____(1)_____(function() {$(window).resize(function() {
pubuliu();
  });
})
functionpubuliu(){
varli=$(".box ul li"),num=3,arr=[];
//获取每个li所占据的宽度// var liW=li.___(2)____;varliW=li.outerWidth();
//遍历每个li// li.___(3)____(function(index,val){li.each(function(index,val){
varscrW=window.innerWidthif(scrW<550){
num=2;
li.css("width","48%")
    }else{
num=3;
li.css("width","31%")
    }
if(index<num){
$(val).css({
top:0,
// left:__(4)____+"px"left:index*liW+index*20+"px"      })
liH=li.outerHeight(true)
arr[index]=$(this).outerHeight(true)
    }else{
varminHeight=arr[0],mindex=0;
//遍历数组// arr.__(5)_____(function(val,index){arr.forEach(function(val,index){
if(minHeight>val){
minHeight=val;
mindex=index;
        }
      })
$(this).css({
// top:__(6)_____,// left:__(7)____+"px"top:minHeight,
left:mindex*liW+mindex*20+"px"      })
// arr[___(8)___]=minHeight+$(this).outerHeight(true)arr[mindex]=minHeight+$(this).outerHeight(true)
    }
  })  
}

image.gif

📰题目分析

首先创建一个无序列表,把图片放入列表了,列表使用绝对定位固定在页面第一行,固定好如下。

image.gif

🔗瀑布流布局原理

1.通过window.innerWidth计算页面的宽度,计算出页面可放数据块的列数。

image.gif

2.将各个li里面的图片高度尺寸记入数组中

3.然后用数组记录每一列的总高度。image.gif

4.将未布置的元素,依次布置到高度最小的那一列,然后更新这一列的高度

5.当浏览器窗口大小改变时,重新排放(列数随页面宽度而改变,因而需要重新排放)。

image.gif

🔗jQuery方法分析

1.resize() 方法

image.gif

 

2.each() 方法

image.gif

3.forEach()方法

forEach()方法为每个数组元素调用一次函数(回调函数)。

image.gif 

4.Window innerWidth 和 innerHeight 属性

image.gif

Window outerWidth 和 outerHeight 属性

image.gif

outerWidth()方法

image.gif

outerHeight()方法

image.gif编辑

🎯最终效果

image.gif

目录
相关文章
|
7月前
|
JavaScript
jQuery实现瀑布流
jQuery实现瀑布流
|
移动开发 JSON JavaScript
七个帮助你处理Web页面层布局的jQuery插件
七个帮助你处理Web页面层布局的jQuery插件
110 0
|
JavaScript
jQuery图片瀑布流demo效果示例(整理)jQuery瀑布流效果
jQuery图片瀑布流demo效果示例(整理)jQuery瀑布流效果
|
JavaScript 前端开发 程序员
【前端】使用jQuery实现静态布局地铁线路地图和自动点亮站点
前段时间,看到有这样一篇文章,标题写着,jQuery是不是过时了!个人觉得,这是技术迭代更新过程中无法避免的,也是一种进步。能发出如此感概,说明已经有新的技术框架逐渐占据了一定的使用量。 技术框架会不会过时,这个并不是最重要的,重要的是能够以技术框架作为辅助,理解和掌握他们的原理,进而实现自己目标功能。功能实现逻辑基本上不会变 jQuery也是有自己得优势,在javascript基础上封装的函数库,更方便控制DOM对象,也可以快速使用jQuery锻炼自己的前端编程逻辑
387 0
|
JavaScript 前端开发 CDN
HTML + jQuery 实现轮播图
HTML + jQuery 实现轮播图
314 0
HTML + jQuery 实现轮播图
|
JavaScript
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
566 0
Jquery实现表格动态增加一行,删除一行(最简洁的代码实现)
|
前端开发 JavaScript
【jquery ajax】实现文件上传提交
【jquery ajax】实现文件上传提交
285 0
【jquery ajax】实现文件上传提交
|
JavaScript
利用jquery的attr方法一行代码实现的简单的图片切换效果
利用jquery的attr方法一行代码实现的简单的图片切换效果
175 0
利用jquery的attr方法一行代码实现的简单的图片切换效果
|
JavaScript
jquery实现单击div切换背景,再次单击回到原来样式
jquery实现单击div切换背景,再次单击回到原来样式
200 0
jquery实现单击div切换背景,再次单击回到原来样式
|
JavaScript
jQuery实现判断li的个数从而实现其他功能
jQuery实现判断li的个数从而实现其他功能
118 0
jQuery实现判断li的个数从而实现其他功能