通过Jquery判断页面元素是否在浏览器的可视区域内

通过Jquery判断页面元素是否在浏览器的可视区域内

前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是javascript操作,原生方法自然可以,不过Jquery已经封装了一些属性,使用起来更方便些,我们这里就讨论这种Jquery的方式.(伸手党可直接看文章屁股 :cool:) 假设此元素为  #item ,先说几个关键的属性:
JavaScript
1
jQuery ( '#item' ) . offset ( ) . top
#item 的绝对偏移量,指#item的实际尺寸(即不包括外边框margin)的上边界到页面顶端的距离.这个值不随窗口滚动而改变
JavaScript
1
jQuery ( '#item' ) . outerHeight ( )
#item 的实际尺寸,即 height+padding+border
JavaScript
1
jQuery ( '#item' ) . outerHeight ( true )
#item的实际尺寸及外边距,即 height+padding+border+margin
JavaScript
1
jQuery ( window ) . scrollTop ( )
窗口滚动的顶部偏移量,即此时页面的上边界到可视区域的上边界的偏移量,简单的可以理解成整个页面滚动了多少距离
JavaScript
1
jQuery ( window ) . height ( )
浏览器窗口可视区域的高度
用脚后跟想想就能想到,在窗口上下滚动的情况下,一个页面元素的状态有3种,1.向上滚动超出可视区域,2.向下滚动超出可视区域,3.在可视区域内.很明显,我们需要的就是1和2两种情况.  情况1:  由于元素随页面向上滚动,所以自然能想到,在页面顶部偏移量不断增加的过程中,边界是从上至下经过一段距离,而这个距离的区域恰好就是元素本身的偏移量加上元素本身的高度,所以当
JavaScript
1
jQuery ( window ) . scrollTop ( ) > ( jQuery ( '#item' ) . offset ( ) . top + jQuery ( '#item' ) . outerHeight ( ) )
这个表达式结果为 true 时,表示元素已经向上滚动,并超出了可视区域.
情况2:  与情况1相反,向下滚动的过程,页面顶部的偏移量是在不断减少中,所以当它小于元素偏移量与可视区域高度的差值的时候,元素则向下并超出了可视区域,即
JavaScript
1
jQuery ( window ) . scrollTop ( ) <</span>(jQuery('#item').offset().top-jQuery(window).height())

那么结论就是将这两种情况作或运算即可达到目的.以下表达式结果如果为 true ,则 #item 不在可视区域内.反之则在可视区域内.
JavaScript
1
( jQuery ( window ) . scrollTop ( ) > ( jQuery ( '#item' ) . offset ( ) . top + jQuery ( '#item' ) . outerHeight ( ) ) ) || ( ( jQuery ( window ) . scr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值