JS如何判断指定dom元素是否在屏幕内

这篇文章主要为大家展示了“JS如何判断指定dom元素是否在屏幕内”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何判断指定dom元素是否在屏幕内”这篇文章吧。

创新互联专业为企业提供雨湖网站建设、雨湖做网站、雨湖网站设计、雨湖网站制作等企业网站建设、网页设计与制作、雨湖企业网站模板建站服务,十年雨湖做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

实现原理

想要实现这个功能,就要知道具体的实现原理。下面直入主题。

我们通过浏览器在浏览一个网页时候是这个样子的,如图所示

JS如何判断指定dom元素是否在屏幕内

页面的长宽,以及各dom的坐标都是静止的,动的是显示窗口坐标而已。所以明白了这个,那么判断一个dom元素是否可见时,就十分简单了。

我们需要知道三个坐标就可知道当前dom是否在可见区域内,分别是

  1. 显示窗口的顶部坐标

  2. 显示窗口的底部坐标

  3. dom元素的中心坐标

其判断规则就是,当dom元素的中心坐标的X及Y坐标均小于显示窗口的顶部,且大于显示窗口的底部坐标时,那么就可以判断该坐标在可见区域。

OK,那么接下来就是要知道这三个坐标怎么计算了。

首先是窗口的顶部坐标,顶部坐标就是页面的滚动条滚动的距离。

其次是底部坐标,底部坐标就是滚动条的距离加上当前可视窗口的高度。

最后dom元素的中心距离,就是这个dom元素到最顶端的高度加上自身高度的一般。

原理就是那么的简单有木有。

具体实现

明白了原理,具体实现起来就很简单啦。下面直接贴上一个简单的dom代码做下示例,在实际的生产中还是要优化的,比如初次的首屏显示等等,这里就不赘述了。




 
 Document


 .box {
 width: 100%;
 height: 200px;
 background: #ff0000;
 margin-bottom: 10px;
 text-align: center;
 color: #fff;
 line-height: 200px;
 font-family: microsoft yahei;
 font-size: 40px;
 
 }
 .animate{
 animation: showText 1s;
 }
 @keyframes showText
 {
 from {
 font-size: 20px;
 }
 to {
 font-size: 40px;
 }
 }


   var box = document.getElementsByClassName('box');  document.addEventListener('scroll',function(){      //滚动条高度+视窗高度 = 可见区域底部高度   var visibleBottom = window.scrollY + document.documentElement.clientHeight;   //可见区域顶部高度   var visibleTop = window.scrollY;   for (var i = 0; i < box.length; i++) {   var centerY = box[i].offsetTop+(box[i].offsetHeight/2);   if(centerY>visibleTop&¢erY

效果图

JS如何判断指定dom元素是否在屏幕内

以上是“JS如何判断指定dom元素是否在屏幕内”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


本文题目:JS如何判断指定dom元素是否在屏幕内
文章出自:http://scjbc.cn/article/ispijs.html