js获取元素的滚动高度,和距离顶部的高度

jq: 

获取浏览器显示区域(可视区域)的高度 :   
$(window).height();   
获取浏览器显示区域(可视区域)的宽度 :
$(window).width();   
获取页面的文档高度   
$(document).height();   
获取页面的文档宽度 :
$(document).width(); 
浏览器当前窗口文档body的高度:  
$(document.body).height();
浏览器当前窗口文档body的宽度: 
$(document.body).width();
获取滚动条到顶部的垂直高度 (即网页被卷上去的高度)  
$(document).scrollTop();   
获取滚动条到左边的垂直宽度 :
$(document).scrollLeft(); 
获取或设置元素的宽度:
$(obj).width();
获取或设置元素的高度:
$(obj).height();
某个元素的上边界到body最顶部的距离:obj.offset().top;(在元素的包含元素不含滚动条的情况下)
某个元素的左边界到body最左边的距离:obj.offset().left;(在元素的包含元素不含滚动条的情况下)
返回当前元素的上边界到它的包含元素的上边界的偏移量:obj.offset().top(在元素的包含元素含滚动条的情况下)
返回当前元素的左边界到它的包含元素的左边界的偏移量:obj.offset().left(在元素的包含元素含滚动条的情况下)

js:

 网页被卷起来的高度/宽度(即浏览器滚动条滚动后隐藏的页面内容高度)

document.documentElement.scrollTop //firefox

document.documentElement.scrollLeft //firefox

document.body.scrollTop //IE

document.body.scrollLeft //IE

等同于:

$(window).scrollTop() 

$(window).scrollLeft()

 网页工作区域的高度和宽度  

document.documentElement.clientHeight// IE firefox  

等同于:

$(window).height()

 元素距离文档顶端和左边的偏移值  

 obj.offsetTop //IE firefox

 obj.offsetLeft //IE firefox

等同于:

 obj.offset().top

 obj.offset().left

 

简单实例(监控元素在可见视图中)

  效果:当元素出现在可见区域时,改变其css样式(背景色变红);

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>监控元素出现在视图中</title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <style>
            p {
                height: 30px;
                line-height: 30px;
                background: #f3f3f3;
                opacity: 0;
            }
        </style>
    </head>

    <body>
        <div class="main">
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
            <p>你好,china!</p>
        </div>
    </body>
    <script>
        function Show() {
            var Height = $(window).height();
            $('p').not('.none').each(function(ind) {
                var Top = $(this).offset().top; //元素距离顶部距离
                var scroll = $(document).scrollTop(); //滚动高度
                console.log(Top + '  ' + scroll);
                if(Top - Height - scroll <= 0) {
                    setTimeout(function() {
                        $('p').not('.none').eq(ind).addClass('show').css('background', 'red').animate({
                            opacity: 1
                        }, 500);
                    }, 200);
                }
            });
        }
        $(function() {
            var Height = $(window).height(); //窗口高度
            console.log('可视高度:' + Height);
            $('.main').find('*').each(function() {
                var Top = $(this).offset().top;
                if(Top - Height <= 0) {
                    $(this).addClass('none').css({
                        'background': '#09f',
                        'opacity': 1
                    });
                }
            });
            $(window).scroll(function() {
                Show();
            })
        })
    </script>

</html>

 

 

懒加载实现

原理是将非首屏的图片src设为一个默认值,然后监听窗口滚动,当图片出现在视窗中时再给他赋予真实的图片地址,这样可以保证首屏的加载速度然后按需加载图片。

首先在渲染时,图片引用默认图片,然后把真实地址放在data-*属性上面。
<image src='./../assets/default.png' :data-src='item.allPics' class='lazyloadimg'>

var bodyScrollHeight =  document.body.scrollTop || document.documentElement.scrollTop;// body滚动高度
  var windowHeight = window.innerHeight;// 视窗高度
  var imgs = document.getElementsByClassName('lazyloadimg');
  for (var i =0; i < imgs.length; i++) {
    var imgHeight = imgs[i].offsetTop;// 图片距离顶部高度  
    if (imgHeight  < windowHeight  + bodyScrollHeight) {
       imgs[i].src = imgs[i].getAttribute('data-src');
       img[i].className = img[i].className.replace('lazyloadimg','')
    }
  }
}


最后再补充两个常见的滚动判断:
1.页面滚动离开首屏(这时可显示回到顶部的按钮):document.body.scrollTop > window.innerHeight
2.页面滚动到底部了(这时可去调接口获取更多内容):window.scrollY + window.innerHeight > document.body.offsetHeight
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值