题目1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现
function isVisible($node){
var windowHeight = $(window).height()
var scrollHeight = $(window).scrollTop()
var offsetHeight = $node.offset().top
if(offsetHeight<windowHeight + scrollHeight && offsetHeight>scrollHeight){
return true
}
return false
}
题目2:当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现
$(window).on('scroll', function(){
var windowHeight = $(window).height()
var scrollHeight = $(window).scrollTop()
var offsetHeight = $img.offset().top
if(offsetHeight<windowHeight + scrollHeight && offsetHeight>scrollHeight){
console.log('true')
return true
}
return false
})
题目3:当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现
$('.image img').data('first','yes')
function isVisible($node){
var windowHeight = $(window).height()
var scrollHeight = $(window).scrollTop()
var offsetHeight = $node.offset().top
if(offsetHeight<windowHeight + scrollHeight && offsetHeight>scrollHeight){
return true
}
return false
}
$(window).on('scroll', function(){
if(isVisible($('.image img')) && $('.image img').data('first') === 'yes'){
console.log('true')
$('.image img').data('first','no')
}
})
题目4: 图片懒加载的原理是什么?
图片延迟加载主要是用来解决一个页面中图片太多,导致打开页面的时候一次性加载太多图片导致打开速度慢的问题。现在在很多网站上都用得很多,比如说微店,淘宝等一些图片量较大的网站,采取懒加载也是利于用户体验。
原理即是网页代码中有img标签,但是没有src属性,只是把src原本应该放的图片链接放到另外一个属性值去,比如说data-src,这样浏览器就不能把图片渲染出来。但是可以通过js获取这个图片链接,通过适时把获取到的图片链接赋值给src属性上,这样图片就能在适时的时候渲染出来,而不是一次性全部加载,而是通过鼠标滚动,一个一个加载进来。
网友评论