首页 > JS判断滚动条到底部

JS判断滚动条到底部

form:http://www.uphtm.com/js/269.html判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

 

scrollTop为滚动条在Y轴上的滚动距离。

 

clientHeight为内容可视区域的高度。

scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。

代码如下(兼容不同的浏览器)。

  1. //滚动条在Y轴上的滚动距离
    function getScrollTop(){var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;if(document.body){bodyScrollTop = document.body.scrollTop;}if(document.documentElement){documentScrollTop = document.documentElement.scrollTop;}scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;return scrollTop;
    }//文档的总高度
    function getScrollHeight(){var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;if(document.body){bodyScrollHeight = document.body.scrollHeight;}if(document.documentElement){documentScrollHeight = document.documentElement.scrollHeight;}scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;return scrollHeight;
    }
    //浏览器视口的高度
    function getWindowHeight(){var windowHeight = 0;if(document.compatMode == "CSS1Compat"){windowHeight = document.documentElement.clientHeight;}else{windowHeight = document.body.clientHeight;}return windowHeight;
    }
    window.onscroll = function(){if(getScrollTop() + getWindowHeight() == getScrollHeight()){alert("已经到最底部了!!");}
    };

如果用jquery来实现的话就更简单了,

  1. $(window).scroll(function(){
  2. var scrollTop = $(this).scrollTop();
  3. var scrollHeight = $(document).height();
  4. var windowHeight = $(this).height();
  5. if(scrollTop + windowHeight == scrollHeight){
  6. alert("已经到最底部了!");
  7. }
  8. });

如果要判断在某一个元素中的滚动条是否到底部,根据类似的思想,将document.body换成特定的元素即可,获取scrollTop和scrollHeight的方式是一样的,但是获取元素可见高度需要用到offsetHeight属性,直接依葫芦画瓢即可。form:http://www.uphtm.com

转载于:https://www.cnblogs.com/coolhtm/p/4435853.html

更多相关:

  • 本文实例讲述了jquery实现Li滚动时滚动条自动添加样式的方法。分享给大家供大家参考。具体如下:这里使用jquery实现当拖动滚动条的时候,Li滚动列表中的内容会自动随滚动条变化而下移,并自动添加样式。运行效果截图如下:具体代码如下:scroll滚动,LI随滚动条自动变化.sub_menu_frame {position: fixe...

  • 起因   起因-webkit-overflow-scrolling问题解决方案: 方案一方案二思考为什么会出现这个问题总结  故事的起因是,在一个多列表的页面上,页面在iOS11,跟iOS10中会发生页面卡住,不能进行滚动。 然后就怀疑是自己的样式写的出了问题,就一直排查定位元素的样式,怎么都找不到问题所在。 但还是本着追...

  • 禁止UIScrollView垂直方向滚动,只允许水平方向滚动 scrollview.contentSize =  CGSizeMake(你要的长度, 0);  禁止UIScrollView水平方向滚动,只允许垂直方向滚动 scrollview.contentSize =  CGSizeMake(0, 你要的宽度);  转载于:...