1、如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现
function isVisible($node){
var windowHeight = $(window).height()
var offsetTop = $node.offset().top
var scrollTop = $(window).scrollTop()
var nodeHeight = $node.outerHeight(true)
if (scrollTop<offsetTop+nodeHeight&&scrollTop>offsetTop-windowHeight) {
return true
} else {
return false
}
}
2、当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现
$(window).on('scroll',function(){
if (isVisible($('#btn'))) {
console.log('true')
}
})
function isVisible($node){
var windowHeight = $(window).height()
var offsetTop = $node.offset().top
var scrollTop = $(window).scrollTop()
var nodeHeight = $node.outerHeight(true)
if (scrollTop<offsetTop+nodeHeight&&scrollTop>offsetTop-windowHeight) {
return true
} else {
return false
}
}
3、当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现
$(window).on('scroll',function(){
$('.pic-ct img').not('.load').each(function(){
if (isVisible($(this))) {
$(this).addClass('load')
console.log('true')
}
})
})
function isVisible($node){
var windowHeight = $(window).height()
var offsetTop = $node.offset().top
var scrollTop = $(window).scrollTop()
var nodeHeight = $node.outerHeight(true)
if (scrollTop<offsetTop+nodeHeight&&scrollTop>offsetTop-windowHeight) {
return true
} else {
return false
}
}
4、 图片懒加载的原理是什么?
在页面载入的时候将页面上的img标签的src指向同一个图片, 把真实地址存放在一个自定义属性中。当图片显示在浏览器窗口可视位置时,再把图片的真实地址给src。