javascript - 如何将 lazyload 和 bxslider 集成在一起?

标签 javascript jquery bxslider jquery-lazyload lazy-loading

我想延迟加载 bxslider 中的图像(或任何类似控件的 slider ,它允许动态数量的幻灯片/图像)。我正在使用 lazyload 延迟加载图像,但 slider 中的图像并未延迟加载。所有图像都随页面一起加载:|。这是我的代码,

<link href="jquery.bxslider.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="jquery.bxslider.js"></script>
    <script src="jquery.lazyload.js"></script>
    <script type="text/javascript" charset="utf-8">
    $(function() {

    $(":not(#hcontainer) img.lazy").lazyload({
        effect: "fadeIn"
      });

      $("img.lazy").lazyload({
        effect: "fadeIn",
        container: $("#hcontainer")
      });

    $('.bxslider').bxSlider({
      minSlides: 1,
      maxSlides: 3,
      slideWidth: 170,
      slideMargin: 10,
      pager: true
    });

    });
      </script>

    <style type="text/css">
    #hcontainer {
        height: 250px;
        overflow: hidden;
    }
    #inner_container {
          width: 900px;
        }
    </style>



    <div id="vcontainer">
      <div id="hcontainer">
        <div id="inner_container">
    <ul class="bxslider">
          <li><img class="lazy" src="1.jpg" data-original="1.jpg" alt="BMW M1 Hood"></li>   
    <li>      <img class="lazy" src="2.jpg" data-original="2.jpg" alt="BMW M1 Side"></li>
        <li>  <img class="lazy" src="3.jpg" data-original="3.jpg"  alt="Viper 1"></li>
        <li>  <img class="lazy" src="4.jpg" data-original="4.jpg" alt="Viper Corner"></li>
        <li>  <img class="lazy" src="5.jpg" data-original="5.jpg" alt="BMW M3 GT"></li>
        <li>  <img class="lazy" src="6.jpg" data-original="6.jpg" alt="Corvette Pitstop"></li>
    </ul>

        </div>
      </div>
      <br/>
      <img class="lazy img-responsive" data-original="2.jpg" width="465" height="574" alt="BMW M1 Side">
      <br/>
      <img class="lazy img-responsive" data-original="3.jpg" width="465" height="574" alt="Viper 1">
      <br/>
      <img class="lazy img-responsive" data-original="4.jpg" width="465" height="574" alt="Viper Corner">
      <br/>
      <img class="lazy img-responsive" data-original="5.jpg" width="465" height="574" alt="BMW M3 GT">
      <br/>
      <img class="lazy img-responsive" data-original="6.jpg" width="465" height="574" alt="Corvette Pitstop">
      <br/>
    </div>

我做错了什么?

附注如果它支持延迟加载,我愿意使用任何其他 slider 控件。

最佳答案

我建议您尝试 lazySizes . lazysizes 会自动检测可见性变化,因此您无需编写任何 JS 代码即可将其与 slider 集成。

您需要做的就是将 src 替换为 data-src,将类 lazyload 添加到您的图像并将 lazysizes 脚本添加到您的页面。

<img data-src="image.jpg" class="lazyload" />

这里有一些例子:

如果您想强制预加载图像,只需添加类 lazypreload

关于javascript - 如何将 lazyload 和 bxslider 集成在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654067/

相关文章:

jquery - 当幻灯片包裹在 float 元素中时,bxslider 没有响应

JavaScript - 关于数据结构的问题

javascript - Angular 2 中的动态模板 URL

javascript - 加载 bxslider 时 colorbox 在 rel 属性上中断

javascript - jQuery 动态排序 AppendTo

jquery - Materialise DatePicker 覆盖 jQuery DatePicker

javascript - 使用 bxSlider 显示/隐藏筛选 slider 项

javascript - 如何在nodejs中同步执行?

javascript - 验证输入框和文本区域

javascript - 如何使用 jquery trim 这样的文本?