• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

jQuery实现瀑布流布局(1+X Web前端开发初级 例题)

武飞扬头像
黛琳ghz
帮助3

文章目录

什么是瀑布流布局❓

🧩适用场景

📄题目要求

🧩html代码

🧩css代码

🧩js代码 

📰题目分析

🔗瀑布流布局原理

🔗jQuery方法分析 

🎯最终效果  


什么是瀑布流布局❓

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

🧩适用场景

学新通

📄题目要求

学新通

🧩html代码

  1.  
    <!DOCTYPE html>
  2.  
    <html>
  3.  
    <head>
  4.  
    <meta charset="UTF-8">
  5.  
    <title>第四题-瀑布流</title>
  6.  
    <script src="js/jquery.min.js"></script>
  7.  
    <link rel="stylesheet" href="css/style.css">
  8.  
    </head>
  9.  
    <body>
  10.  
    <div class="box">
  11.  
    <ul>
  12.  
    <li><img src="img/jx1.jpg" alt="" /></li>
  13.  
    <li><img src="img/jx10.jpg" alt="" /></li>
  14.  
    <li><img src="img/jx2.jpg" alt="" /></li>
  15.  
    <li><img src="img/jx14.jpg" alt="" /></li>
  16.  
    <li><img src="img/jx16.jpg" alt="" /></li>
  17.  
    <li><img src="img/jx15.jpg" alt="" /></li>
  18.  
    <li><img src="img/jx2.jpg" alt="" /></li>
  19.  
    <li><img src="img/jx5.jpg" alt="" /></li>
  20.  
    <li><img src="img/jx6.jpg" alt="" /></li>
  21.  
    <li><img src="img/jx9.jpg" alt="" /></li>
  22.  
    </ul>
  23.  
    </div>
  24.  
    </body>
  25.  
    <script src="js/index.js"></script>
  26.  
    </html>
学新通

🧩css代码

  1.  
    body,ul {
  2.  
    padding: 0;
  3.  
    margin: 0;
  4.  
    }
  5.  
    .box {
  6.  
    width: 100%;
  7.  
    }
  8.  
    .box ul {
  9.  
    width: 100%;
  10.  
    }
  11.  
    .box ul li {
  12.  
    position: absolute;
  13.  
    list-style: none;
  14.  
    border: 1px solid #ccc;
  15.  
    padding: 1%;
  16.  
    margin: 1%;
  17.  
    width: 31%;
  18.  
    box-sizing: border-box;
  19.  
    }
  20.  
    .box ul li img {
  21.  
    display: block;
  22.  
    width: 100%;
  23.  
    }
学新通

🧩js代码 

  1.  
    $(function(){
  2.  
    pubuliu();
  3.  
    //随着窗口的大小变化重新执行函数
  4.  
    // ____(1)_____(function() {
  5.  
    $(window).resize(function() {
  6.  
    pubuliu();
  7.  
    });
  8.  
    })
  9.  
    function pubuliu(){
  10.  
    var li=$(".box ul li"),num=3,arr=[];
  11.  
    //获取每个li所占据的宽度
  12.  
    // var liW=li.___(2)____;
  13.  
    var liW=li.outerWidth();
  14.  
     
  15.  
    //遍历每个li
  16.  
    // li.___(3)____(function(index,val){
  17.  
    li.each(function(index,val){
  18.  
    var scrW=window.innerWidth
  19.  
    if(scrW<550){
  20.  
    num=2;
  21.  
    li.css("width","48%")
  22.  
    }else{
  23.  
    num=3;
  24.  
    li.css("width","31%")
  25.  
    }
  26.  
     
  27.  
    if(index<num){
  28.  
    $(val).css({
  29.  
    top:0,
  30.  
    // left:__(4)____ "px"
  31.  
    left:index*liW index*20 "px"
  32.  
    })
  33.  
     
  34.  
    liH=li.outerHeight(true)
  35.  
    arr[index]=$(this).outerHeight(true)
  36.  
    }else{
  37.  
    var minHeight=arr[0],mindex=0;
  38.  
    //遍历数组
  39.  
    // arr.__(5)_____(function(val,index){
  40.  
    arr.forEach(function(val,index){
  41.  
    if(minHeight>val){
  42.  
    minHeight=val;
  43.  
    mindex=index;
  44.  
    }
  45.  
    })
  46.  
    $(this).css({
  47.  
    // top:__(6)_____,
  48.  
    // left:__(7)____ "px"
  49.  
    top:minHeight,
  50.  
    left:mindex*liW mindex*20 "px"
  51.  
    })
  52.  
    // arr[___(8)___]=minHeight $(this).outerHeight(true)
  53.  
    arr[mindex]=minHeight $(this).outerHeight(true)
  54.  
    }
  55.  
    })
  56.  
    }
学新通

📰题目分析

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

学新通

🔗瀑布流布局原理

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()方法

学新通

🎯最终效果 

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiajbbg
系列文章
更多 icon
同类精品
更多 icon
继续加载