-
获取浏览器显示区域(可视区域)的高度 :
-
$(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