当前位置:首页 > jquery

jquery瀑布流

2026-04-08 09:15:18jquery

jQuery 瀑布流实现方法

瀑布流(Masonry)是一种流行的网页布局方式,常见于图片展示网站。以下是使用 jQuery 实现瀑布流的几种方法:

使用 jQuery Masonry 插件

  1. 引入必要的库文件:

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
  2. HTML 结构:

    <div class="grid">
    <div class="grid-item">...</div>
    <div class="grid-item">...</div>
    <!-- 更多项目 -->
    </div>
  3. CSS 样式:

    jquery瀑布流

    .grid {
    margin: 0 auto;
    }
    .grid-item {
    width: 200px;
    margin-bottom: 10px;
    }
  4. 初始化 Masonry:

    $(document).ready(function() {
    $('.grid').masonry({
     itemSelector: '.grid-item',
     columnWidth: 200,
     gutter: 10
    });
    });

使用纯 jQuery 实现

  1. HTML 结构保持不变

    jquery瀑布流

  2. JavaScript 实现:

    
    $(function() {
    function waterfall() {
     var $grid = $('.grid');
     var $items = $('.grid-item');
     var colWidth = 200;
     var colCount = Math.floor($grid.width()/colWidth);
     var colHeights = [];
    
     for(var i = 0; i < colCount; i++) {
       colHeights.push(0);
     }
    
     $items.each(function() {
       var minHeight = Math.min.apply(null, colHeights);
       var index = colHeights.indexOf(minHeight);
    
       $(this).css({
         'position': 'absolute',
         'left': index * colWidth,
         'top': minHeight
       });
    
       colHeights[index] += $(this).outerHeight(true);
     });
    
     $grid.height(Math.max.apply(null, colHeights));
    }

$(window).resize(waterfall); waterfall(); });


#### 响应式瀑布流实现

1. 添加响应式断点:
```javascript
$(window).on('load resize', function() {
  var windowWidth = $(window).width();
  var colWidth = windowWidth < 768 ? 150 : 200;

  $('.grid').masonry({
    itemSelector: '.grid-item',
    columnWidth: colWidth,
    gutter: 10
  });
});
  1. 动态加载内容:
    function loadMoreItems() {
    $.get('load-more.php', function(data) {
     var $newItems = $(data);
     $('.grid').append($newItems).masonry('appended', $newItems);
    });
    }

图片加载完成后再布局

对于包含图片的瀑布流,需要在图片加载完成后重新布局:

$('.grid').imagesLoaded().progress(function() {
  $('.grid').masonry('layout');
});

这些方法提供了从简单到复杂的瀑布流实现方案,可以根据项目需求选择合适的实现方式。插件方式更简单高效,而纯 jQuery 实现则更灵活可控。

标签: 瀑布jquery
分享给朋友:

相关文章

jquery 菜鸟

jquery 菜鸟

以下是针对 jQuery 初学者的基础指南,涵盖核心概念和常用操作: jQuery 简介 jQuery 是一个快速、轻量级的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和…

jquery作用

jquery作用

jQuery的作用概述 jQuery是一个快速、简洁的JavaScript库,主要用于简化HTML文档遍历、事件处理、动画设计和Ajax交互等操作。其核心目标是让开发者以更少的代码完成更多功能,同时解…

jquery图片

jquery图片

jQuery 图片操作 jQuery 提供了多种方法来处理图片,包括加载、显示、隐藏、动画效果等。以下是一些常见的 jQuery 图片操作方法: 动态加载图片 使用 jQuery 的 attr()…

jquery 添加

jquery 添加

jQuery 添加元素的方法 动态添加 HTML 内容 使用 append()、prepend()、after() 或 before() 方法可以在 DOM 中插入新元素。 // 在元素内部末尾…

jquery 函数

jquery 函数

jQuery 函数基础 jQuery 是一个快速、简洁的 JavaScript 库,通过封装原生 JavaScript 功能简化 DOM 操作、事件处理、动画等。核心函数 $() 或 jQuery()…

jquery遍历

jquery遍历

jQuery遍历方法 jQuery提供了多种遍历DOM元素的方法,可以根据需求选择合适的方式操作元素集合。 each()方法 each()方法用于遍历jQuery对象中的每个元素,并对每个元素执行回…