懒加载相关问题

1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现

 function isVisible ($node) {
        var scrollTop = $(window).scrollTop();
        var windowHeight = $(window).height();
        var targetOffsetTop = $node.offset().top;
        
        if (targetOffsetTop < (scrollTop + windowHeight) && targetOffsetTop > scrollTop) {
            return true;
        }
        return false;
    }

2,当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现

    //$node为目标元素

    $(window).on('scroll',function () {
        if (isVisible($node)) {
            console.log(true);
        }
    });

    function isVisible($node){
        var scrollTop = $(window).scrollTop()
        var windowHeight = $(window).height()
        var offsetTop = $node.offset().top

        if(offsetTop < scrollTop + windowHeight && offsetTop > scrollTop){
            return true
        }
        return false
    }


3,当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现

 //$node为目标元素
    function checkshow ($node) {
        var windowHeight = $(window).height();
        var scrollTop = $(window).scrollTop();
        var nodeOffsetTop = $node.offset().top;

        if (nodeOffsetTop < (windowHeight + scrollTop) && nodeOffsetTop > scrollTop) {
            return true;
        }
        else {
            return false;
        }
    }
    function firstShow ($node) {
        $node.data('hasShowed',false); //自定义一个属性来标记元素是否已经被展示过了
        if (checkshow($node)) {
            if (!$node.data('hasShowed')) { //第一次时为false
                $node.data('hasShowed',true);
                console.log(true);
            }
        }
    }

4,图片懒加载的原理是什么?

对于一个有多个图片的网站来说,访问的时候不应该直接加载所有图片,而是应该只讲浏览器窗口内的图片进行加载。当滚动的时候,在加载更多的图片。叫做图片的懒加载。

我们可以通过给img自定义一个新属性,来存储图片真实的src地址,当需要加载的时候,再将这个真实的地址赋给src,进行图片加载。

整体思路:

所以大体的思路为:

  • 设置个data-src(自定义一个属性)来存放真实地址
  • 当滚动页面时,检查所有的img标签,看是否出现在视野中,如果已经出现在了视野中,那继续再进行判断,看其是否已经被加载过了,如果还没有被加载过,那就进行加载。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,870评论 1 92
  • 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现...
    _Dot912阅读 1,721评论 10 8
  • 懒猫Lynn阅读 360评论 0 0
  • 选择,好懵懂 我不确定自己的未来 我也不确定自己的心情 但我确定我必须坚强并成长 或许这就是进退无路 在真正的进退...
    wu枫阅读 382评论 0 0
  • 怪你下着雨不打伞 一跳撞进我眼里 怪你白衬衫红裙子长发齐肩 一笑嫣然入我心 怪你眼中藏着故事 怪你颜值写着诗篇 怪...
    哮汪天涯阅读 223评论 0 0