【问题标题】:How do I integrate lazyload & bxslider together?如何将延迟加载和 bxslider 集成在一起?
【发布时间】:2018-12-20 21:59:47
【问题描述】:

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

<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>

我做错了什么?

p.s.如果它支持延迟加载,我愿意使用任何其他滑块控件。

【问题讨论】:

  • 您仍然有使用 src 属性的图像。为了让layloading工作,你需要删除所有的src属性。
  • 如果我删除 src 那么 bxslider 不会加载图像:|
  • 你能做一个 js fiddle 让我们玩弄它吗?
  • 不知道怎么上传bxslider和layload脚本:|。你能分享一个文件主机,我可以上传这些文件并将其添加到 jsfiddle 吗?
  • 我为你创建了这个 jsfiddle。我做了一些修改,我认为它应该可以工作。 jsfiddle.net/7uj1z19k 基本上我删除了所有 src 属性和 $(":not(#hcontainer) img.lazy") 调用以及第二个lazyload调用的容器属性。

标签: javascript jquery bxslider jquery-lazyload lazy-loading


【解决方案1】:

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

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

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

这里有一些例子:

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

【讨论】:

  • 不错的一个!你能帮我添加触摸滑动事件吗?我的意思是,我使用 bxslider 是因为它隐式处理移动触摸事件。我们可以在这里做同样的事情吗?
  • lazySizes 也适用于开箱即用的 bxSlider。这些例子只是例子。因此,只需将 bxSlider 与lazySizes 一起使用即可。虽然我认为 flickity 是目前最好的滑块之一。
【解决方案2】:

您可以使用此代码:

<div class="slider">
  <div>
    <img src="http://placekitten.com/400/200">
  </div>
  <div>
    <img class="lazy" src="http://www.llbean.com/images/spacer.gif" data-src="http://placekitten.com/450/200">
  </div>
  <div>
    <img class="lazy" src="http://www.llbean.com/images/spacer.gif" data-src="http://placekitten.com/500/200">
  </div>
</div>

$(function(){

    // create an options object to store your slider settings
    var slider_config = {
        mode: 'horizontal', // place all slider options here
        onSlideBefore: function($slideElement, oldIndex, newIndex){
            var $lazy = $slideElement.find(".lazy")
            var $load = $lazy.attr("data-src");
            $lazy.attr("src",$load).removeClass("lazy");
        }
    }
    // init the slider with your options
    var slider = $('.slider').bxSlider(slider_config);
});

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多