js获得滚动条位置 是否存在 距离某一侧像素值(转)

本文介绍如何使用JavaScript判断DOM对象是否出现滚动条。利用offsetTop、offsetLeft、offsetHeight及scrollHeight等属性,通过简单条件判断实现。同时提供获取滚动条位置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javascript中如何判断dom对象是否出现了滚动条
  某些场景下需要用javascript去获取页面中的某个dom对象是否出现了滚动条,
  那么javascript的dom操作为我们提供了哪些方法可以得到呢?
  参考DHTML手册会发现:
  dom对象有offsetTop和 offsetLeft属性,
  它们所获得的值是当前滚动条所滚动的数值;
  当滚动条没有滚动或者没有出现的时候,
  这两个值都是0。
  dom对象还有属性:offsetHeight和 scrollHeight,
  offsetHeight是dom对象相对父级元素的可见高度,
  scrollHeight 是dom对象包含了滚动部分的高度。
  有了上述的四个基本属性,
  那么我们可以尝试进行判断(当然以下的判断是在没有设置css样式:overflow:hidden的情况下的):
  当dom对象offsetTop > 0的时候,说明滚动条已经存在了;
  另外,如果scrollHeight > offsetHeight即包含滚动部分的高度超出可视高度的时候,
  滚动条即已出现。
  综合上述两条可以得出以下结论:
  if (dom.offsetTop > 0 || dom.scrollHeight > dom.offsetHeight) {
  //滚动条已出现
  }
  当然,
  是不是只有这两个条件可以判断滚动条是否存在呢?
  如有朋友有更好的方法,可点击本文后面的“我要留言”给我留言,
  感谢赐教~

js获得滚动条位置


注意body的使用


function getScroll()


{


var t, l, w, h;




if (document.documentElement && document.documentElement.scrollTop) {


t = document.documentElement.scrollTop;


l = document.documentElement.scrollLeft;


w = document.documentElement.scrollWidth;


h = document.documentElement.scrollHeight;


} else if (document.body) {


t = document.body.scrollTop;


l = document.body.scrollLeft;


w = document.body.scrollWidth;


h = document.body.scrollHeight;


}


return { t: t, l: l, w: w, h: h };


}


获取浏览器垂直滚动条向下滚动的像素
  关于js中 document.body.scrollTop 不能返回正确值的原因 收藏
  本来是为了通过 document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,但是不管滚动条在什么位置总是返回是0,造成这样的原因和html的头部声明有关,如果头部声明 为:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">,这样肯定得到的结果是 0,如果该为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">就能得到正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种
  1、var scrollPos; if (typeof window.pageYOffset != 'undefined') { scrollPos = window.pageYOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { scrollPos = document.documentElement.scrollTop; } else if (typeof document.body != 'undefined') { scrollPos = document.body.scrollTop; }
  2、用document.documentElement.scrollTop 替代 document.body.scrollTop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值