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>