加载图像,因为向下滚动页面不起作用?

用户名

向下滚动页面时,我在网站上使用此代码加载图像:http : //css-tricks.com/snippets/javascript/lazy-loading-images/

您可以在这里查看我要在哪里使用它:http : //www.easythemepro.com/themes.php

我已将此Javascript代码添加到标头中:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
!function(window){
  var $q = function(q, res){
        if (document.querySelectorAll) {
          res = document.querySelectorAll(q);
        } else {
          var d=document
            , a=d.styleSheets[0] || d.createStyleSheet();
          a.addRule(q,'f:b');
          for(var l=d.all,b=0,c=[],f=l.length;b<f;b++)
            l[b].currentStyle.f && c.push(l[b]);

          a.removeRule(0);
          res = c;
        }
        return res;
      }
    , addEventListener = function(evt, fn){
        window.addEventListener
          ? this.addEventListener(evt, fn, false)
          : (window.attachEvent)
            ? this.attachEvent('on' + evt, fn)
            : this['on' + evt] = fn;
      }
    , _has = function(obj, key) {
        return Object.prototype.hasOwnProperty.call(obj, key);
      }
    ;

  function loadImage (el, fn) {
    var img = new Image()
      , src = el.getAttribute('data-src');
    img.onload = function() {
      if (!! el.parent)
        el.parent.replaceChild(img, el)
      else
        el.src = src;

      fn? fn() : null;
    }
    img.src = src;
  }

  function elementInViewport(el) {
    var rect = el.getBoundingClientRect()

    return (
       rect.top    >= 0
    && rect.left   >= 0
    && rect.top <= (window.innerHeight || document.documentElement.clientHeight)
    )
  }

    var images = new Array()
      , query = $q('img.lazy')
      , processScroll = function(){
          for (var i = 0; i < images.length; i++) {
            if (elementInViewport(images[i])) {
              loadImage(images[i], function () {
                images.splice(i, i);
              });
            }
          };
        }
      ;
    // Array.prototype.slice.call is not callable under our lovely IE8 
    for (var i = 0; i < query.length; i++) {
      images.push(query[i]);
    };

    processScroll();
    addEventListener('scroll',processScroll);

}(this);?
</script>

我正在使用这种格式显示图像:

<img src="img/blank.png" data-src="demo/wp-content/themes/Alfina/screenshot.png" width="300" height="225" class="lazy">

您可以在以下位置查看此代码在演示页面上的工作位置,http://css-tricks.com/examples/LazyLoading/但我不知道是什么原因导致该代码无法在我的页面上工作...

任何帮助将不胜感激!

斯里达河

用此脚本替换您的函数

$(function() {
  var $q = function(q, res){
        if (document.querySelectorAll) {
          res = document.querySelectorAll(q);
        } else {
          var d=document
            , a=d.styleSheets[0] || d.createStyleSheet();
          a.addRule(q,'f:b');
          for(var l=d.all,b=0,c=[],f=l.length;b<f;b++)
            l[b].currentStyle.f && c.push(l[b]);

          a.removeRule(0);
          res = c;
        }
        return res;
      }
    , addEventListener = function(evt, fn){
        window.addEventListener
          ? this.addEventListener(evt, fn, false)
          : (window.attachEvent)
            ? this.attachEvent('on' + evt, fn)
            : this['on' + evt] = fn;
      }
    , _has = function(obj, key) {
        return Object.prototype.hasOwnProperty.call(obj, key);
      }
    ;

  function loadImage (el, fn) {
    var img = new Image()
      , src = el.getAttribute('data-src');
    img.onload = function() {
      if (!! el.parent)
        el.parent.replaceChild(img, el)
      else
        el.src = src;

      fn? fn() : null;
    }
    img.src = src;
  }

  function elementInViewport(el) {
    var rect = el.getBoundingClientRect()

    return (
       rect.top    >= 0
    && rect.left   >= 0
    && rect.top <= (window.innerHeight || document.documentElement.clientHeight)
    )
  }

    var images = new Array()
      , query = $q('img.lazy')
      , processScroll = function(){
          for (var i = 0; i < images.length; i++) {
            if (elementInViewport(images[i])) {
              loadImage(images[i], function () {
                images.splice(i, i);
              });
            }
          };
        }
      ;
    // Array.prototype.slice.call is not callable under our lovely IE8 
    for (var i = 0; i < query.length; i++) {
      images.push(query[i]);
    };

    processScroll();
    addEventListener('scroll',processScroll);

  });

小提琴演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Flutter CachedNetworkImage不起作用,向上滚动到底部或向下滚动到向上时再次加载图像

如何使用Appium向下滚动以单击特定元素,因为scrollTo不起作用

由于平滑滚动,向下滚动加载数据在IE中不起作用

jQuery向下滚动CSS不起作用

向下滚动时动画不起作用

重定向到其他页面不起作用,因为图像会生成标题信息

页面滚动jQuery函数不起作用

使用jQuery滚动页面不起作用

向下滚动更改文本颜色不起作用?

向下滚动到单击的 DIV 不起作用

模态运行后自动向下滚动不起作用

Firefox向下滚动页面加载

滚动到页面底部时,使用ajax加载PHP代码-在iPhone上不起作用

页面加载后使用 JQuery 滚动到 DIV 不起作用

淡入页面效果很好,向下滑动不起作用

preventDefault()不起作用,页面被重新加载

jQuery页面加载事件不起作用

AngularJS 重新加载页面不起作用

处理PApplet加载图像不起作用

多个图像加载动画不起作用

Emgu CV图像加载不起作用

铅笔导出页面,因为PNG不起作用

Android / Java / Appium-向下滑动(向下滚动)不起作用[移动应用]

向上翻页、向下翻页、向上和向下键在我的页面上不起作用

网页加载时页面加载功能(js)不起作用

滚动以锚定在Wordpress页面上不起作用

平滑滚动在github页面上不起作用

使用useEffect在滚动上移动图像不起作用

滚动标题后显示图像-尝试不起作用吗?