首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jquery实现瀑布流加载图片的代码

瀑布流加载图片是一种流行的网页布局方式,它能够使图片按照一定的规律排列,通常是从上到下,从左到右,形成类似瀑布的效果。使用jQuery实现瀑布流加载图片,可以通过监听滚动事件来判断是否需要加载更多图片,并动态地将新图片添加到页面中。

以下是一个简单的jQuery实现瀑布流加载图片的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>瀑布流加载图片</title>
<style>
  .container {
    position: relative;
    width: 100%;
  }
  .item {
    position: absolute;
    width: 200px;
    margin: 5px;
    box-sizing: border-box;
  }
  .item img {
    width: 100%;
    display: block;
  }
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div class="container">
  <!-- 图片将在这里动态加载 -->
</div>

<script>
$(document).ready(function() {
  var isLoading = false; // 是否正在加载数据的标志
  var loadCount = 0; // 已加载的图片数量
  var container = $('.container');
  var itemWidth = 200; // 每个图片容器的宽度
  var columns = Math.floor(container.width() / itemWidth); // 计算列数

  function layoutImages() {
    var items = $('.item');
    var heights = []; // 存储每列的高度
    items.each(function(index) {
      var column = index % columns;
      $(this).css('left', column * itemWidth);
      if (heights[column] === undefined) {
        heights[column] = 0;
      }
      $(this).css('top', heights[column]);
      heights[column] += $(this).outerHeight() + 5; // 加上间距
    });
    container.height(Math.max.apply(null, heights)); // 设置容器高度
  }

  function loadImages() {
    if (isLoading) return;
    isLoading = true;
    // 模拟异步加载图片数据
    setTimeout(function() {
      for (var i = 0; i < 10; i++) {
        var item = $('<div class="item"><img src="https://via.placeholder.com/200x' + (Math.floor(Math.random() * 200 + 100)) + '" alt="图片"></div>');
        container.append(item);
      }
      loadCount += 10;
      layoutImages();
      isLoading = false;
    }, 1000);
  }

  function checkLoadMore() {
    if (container.height() - $(window).scrollTop() - $(window).height() < 200) {
      loadImages();
    }
  }

  $(window).scroll(checkLoadMore);
  loadImages(); // 初始加载图片
});
</script>
</body>
</html>

在这个示例中,我们首先定义了一个容器 .container 来放置图片,每个图片都被包裹在一个 .item 的div中。我们使用CSS设置了 .item 的绝对定位,这样可以通过JavaScript动态地设置它们的位置。

JavaScript部分首先计算了容器可以容纳的列数,然后定义了 layoutImages 函数来根据每列的高度重新布局图片。loadImages 函数模拟了异步加载图片的过程,并在加载完成后调用 layoutImages 来更新布局。

最后,我们监听了窗口的滚动事件,当用户滚动到接近容器底部时,触发 loadImages 函数加载更多图片。

这个示例是一个基础的瀑布流实现,实际应用中可能需要根据具体需求进行调整和优化。例如,可以添加错误处理、图片懒加载、更复杂的布局算法等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券