jquery懒加载、回到顶部

问答

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

 function isVisible($node){ }

//

<script type="text/javascript">
    function isVisible($node) {
        var $scrollTop = $(window).scrollTop(),
                $winH = $(window).height(),
                $nodeTop = $node.offset().top;
        if ($nodeTop < ($scrollTop + $winH)) {
            console.log('true')
        } else {
            console.log('false')
        }
    }
</script>

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

<div class="aa" style="height: 2000px;">1</div>
<div class="bb">2</div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript">
    var $node = $('.bb');
    function isVisible($node) {
        $(window).on('scroll', function () {
            var top = $node.offset().top;
            var winH = $(window).height();
            var scrollH = $(window).scrollTop();
            if (top < winH + scrollH) {
                console.log(true)
            } else {
                console.log(false)
            }
        })
    }
    isVisible($node);
</script>

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

<div class="aa" style="height: 2000px;">1</div>
<div class="bb">2</div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript">
    var $node = $('.bb');
    function isVisible($node) {
        $(window).on('scroll', function () {
            var $top = $node.offset().top,
                $winH = $(window).height(),
                $scrollH = $(window).scrollTop();

            if ($top < $winH + $scrollH) {
                if($node.attr('isLoaded')){return}
                console.log(true)
                $node.attr('isLoaded', true);
            } else {
                console.log(false)
            }
        })
    }
    isVisible($node);
</script>

4、图片懒加载的原理是什么?
首先设置所有图片的背景图为空白的(这是为了避免一些浏览器可能对没有图片的地方显示“X”造成视觉上的不完美),空白图片的URL保持一致(浏览器就不会重复加载消耗资源),当图片出现在窗口视线中的时候,执行图片链接地址的替换(如何判断图片出现在视线中呢:目标元素的offset().top 小于 $(window).height() + $(window).scrollTop() )。

翻到显示18的时候出现“回到顶部”按钮,因为setTimeout所以会延迟500毫秒出现
JQ的懒加载
本地apach测试通过
待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现...
    coolheadedY阅读 418评论 0 0
  • 问答 1. 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVis...
    小木子2016阅读 210评论 0 0
  • 回答: 1.何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一函数 isVisib...
    ahong_吴阅读 127评论 0 0
  • 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现...
    Nicklzy阅读 580评论 0 50
  • 问答 1.如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisi...
    鸿鹄飞天阅读 236评论 0 1