饥人谷技术博客

懒加载

2017-10-30  本文已影响0人  饥人谷_Jack

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

        var clock;
        function isVisible($img) {
            var windowHeight = $(window).height();
            var scrollHeight = $(window).scrollTop();
            var offsetHeight = $img.offset().top;
            console.log(offsetHeight);
            console.log(scrollHeight + windowHeight);
            if (offsetHeight < windowHeight + scrollHeight) {
                return true
            };
            return false;
        }
        $(window).on('scroll', function () {
            if (clock) {
                clearTimeout(clock)
            };
            clock = setTimeout(function () {
                console.log(isVisible($('#show')))
            }, 300);
        })

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

        var clock;
        function isVisible($img) {
            var windowHeight = $(window).height();
            var scrollHeight = $(window).scrollTop();
            var offsetHeight = $img.offset().top;
            console.log(offsetHeight);
            console.log(scrollHeight + windowHeight);
            if (offsetHeight < windowHeight + scrollHeight) {
                return true
            };
            return false;
        }
        $(window).on('scroll', function () {
            if (clock) {
                clearTimeout(clock)
            };
            clock = setTimeout(function () {
                console.log(isVisible($('#show')))
            }, 300);
        })

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

        var clock;
        function isVisible($img) {
            var windowHeight = $(window).height();
            var scrollHeight = $(window).scrollTop();
            var offsetHeight = $img.offset().top;
            if (offsetHeight < windowHeight + scrollHeight && offsetHeight > scrollHeight) {
                return true;
            };
            return false;
        }
       
        function isFirstLoaded($node) {
            if($node.hasClass('active')) {
                return true;
            }else {
                $node.addClass('active');
                return false;
            }
        }
        $(window).on('scroll', function () {
            if (clock) {
                clearTimeout(clock)
            };
            clock = setTimeout(function () {
                if(isVisible($('#show')) && !isFirstLoaded($('#show'))) {
                    console.log('first show')
                }
            }, 300);
        })

题目4: 图片懒加载的原理是什么?

题目5: 实现视频中的图片懒加载效果

懒加载事例

上一篇下一篇

猜你喜欢

热点阅读