jQuery实现瀑布流布局(1+X Web前端开发初级 例题)
2023-09-11 14:15:13 时间
文章目录
什么是瀑布流布局❓
(waterfall) 瀑布流布局是一种流行的网页布局方式,是指元素在页面的布局中像瀑布一样从上到下布局,即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次按照规则放入指定位置。
🧩适用场景
📄题目要求
🧩html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第四题-瀑布流</title>
<script src="js/jquery.min.js"></script>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="box">
<ul>
<li><img src="img/jx1.jpg" alt="" /></li>
<li><img src="img/jx10.jpg" alt="" /></li>
<li><img src="img/jx2.jpg" alt="" /></li>
<li><img src="img/jx14.jpg" alt="" /></li>
<li><img src="img/jx16.jpg" alt="" /></li>
<li><img src="img/jx15.jpg" alt="" /></li>
<li><img src="img/jx2.jpg" alt="" /></li>
<li><img src="img/jx5.jpg" alt="" /></li>
<li><img src="img/jx6.jpg" alt="" /></li>
<li><img src="img/jx9.jpg" alt="" /></li>
</ul>
</div>
</body>
<script src="js/index.js"></script>
</html>
🧩css代码
body,ul {
padding: 0;
margin: 0;
}
.box {
width: 100%;
}
.box ul {
width: 100%;
}
.box ul li {
position: absolute;
list-style: none;
border: 1px solid #ccc;
padding: 1%;
margin: 1%;
width: 31%;
box-sizing: border-box;
}
.box ul li img {
display: block;
width: 100%;
}
🧩js代码
$(function(){
pubuliu();
//随着窗口的大小变化重新执行函数
// ____(1)_____(function() {
$(window).resize(function() {
pubuliu();
});
})
function pubuliu(){
var li=$(".box ul li"),num=3,arr=[];
//获取每个li所占据的宽度
// var liW=li.___(2)____;
var liW=li.outerWidth();
//遍历每个li
// li.___(3)____(function(index,val){
li.each(function(index,val){
var scrW=window.innerWidth
if(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{
var minHeight=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)
}
})
}
📰题目分析
首先创建一个无序列表,把图片放入列表了,列表使用绝对定位固定在页面第一行,固定好如下。
🔗瀑布流布局原理
1.通过window.innerWidth计算页面的宽度,计算出页面可放数据块的列数。
2.将各个li里面的图片高度尺寸记入数组中
3.然后用数组记录每一列的总高度。4.将未布置的元素,依次布置到高度最小的那一列,然后更新这一列的高度
5.当浏览器窗口大小改变时,重新排放(列数随页面宽度而改变,因而需要重新排放)。🔗jQuery方法分析
1.resize() 方法
2.each() 方法
3.forEach()方法
forEach()方法为每个数组元素调用一次函数(回调函数)。
4.Window innerWidth 和 innerHeight 属性
Window outerWidth 和 outerHeight 属性
outerWidth()方法
outerHeight()方法
🎯最终效果
相关文章
- Web基础 HTML CSS JS JQuery AJAX
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
- jquery $.proxy使用 Jquery实现ready()的源码
- web安全day42:使用BurpSuite理解Web工作机制
- jQuery+AJXA+PHP动态获取数据实现新闻网页下拉加载功能(1+X Web前端开发中级 例题)
- Web测试的各个测试点,居然这么全!(文末送web测试方法大全一份)
- JQuery入门(3)
- ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API
- Web前端JQuery面试题(二)
- PHP / JavaScript / jQuery 表单验证与处理总结: 第①部分 PHP 表单验证与处理
- Web 在线文件管理器学习笔记与总结(6)jQuery UI 预览图片
- 《WEB安全渗透测试》(24)jQuery中的XSS漏洞
- jQuery操作checkbox选择
- 《jQuery EasyUI开发指南》——1.6 新建Web Project
- 《jQuery、jQuery UI及jQuery Mobile技巧与示例》——7.9 技巧:使用选项卡微件导航页面
- jQuery鼠标划入划出
- Jquery_操作cookies
- 【web前端(三十八)】javascript_jquery正则表达式对象、全局匹配
- web压力測试-Web Bench
- jQuery的deferred对象详解(转载)
- 玩转spring boot——结合jQuery和AngularJs
- JQuery事件绑定bind、live、on、trigger
- jquery获取select选中项的文本
- jQuery遍历之向下遍历