scroll 方法 获取滚轴距离顶部高度
- $(window).scroll(function(){
- var supportPageOffset = window.pageXOffset !== undefined; // 判断是否支持pageXOffset
- var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); // 判断渲染模式是不是标准模式
- var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
- if(y==0){
- alert(1);
- }
- });
参考原文:
http://www.cnblogs.com/zxjwlh/p/6284330.html
Javascript中与Scroll有关的方法
这块确实太乱了,被兼容搞的简直快要晕死,默默地总结下...
与scroll相关的方法
4个window对象下:scrollX、scrollY、scrollTo、scroll(作用和scrollTo一样)
4个Element对象下:scrollWidth、scrollHeight、scrollLeft、scrollTop
window对象下(BOM)
window.scrollX、window.scrollY
- var x = window.scrollX; // 以像素为单位,返回水平轴上document已经被卷去的宽度 number类型
- var y = window.scrollY; // 以像素为单位,返回垂直方向上document被卷曲的高度 number类型
pageYOffset
属性是 scrollY
属性的别名,pageXOffset同理,为了跨浏览器兼容,一般用后者(pageYOffset、pageXOffset)。
另外旧版本(<9)对这两个属性都不支持,应该选用非标准的属性。
兼容性代码如下:(获取页面垂直和水平的滚动距离!)(复杂版)

- var supportPageOffset = window.pageXOffset !== undefined; // 判断是否支持pageXOffset
- var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); // 判断渲染模式是不是标准模式
/**
* 如果支持pageXOffset,直接用window.pageXOffset. 如不支持,判断渲染模式
* 如果是标准模式,用document.documentElement.scrollLeft,
* 如果是混杂模式,用document.body.scrollTop.
**/- var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;
- var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;

window.scrollTo( x-coord, y-coord ) :

- MDN API原文:(以左上角为坐标原点,以像素为单位沿水平和垂直方向滚动到指定位置)
- x-coord is the pixel along the horizontal axis of the document that you want displayed in the upper left.
- y-coord is the pixel along the vertical axis of the document that you want displayed in the upper left.

不需要做兼容,可以直接用
window.scroll( x-coord, y-coord ): 作用同 window.scrollTo()
Element对象下(DOM):
scrollWidth:只读属性,返回该元素内容区域宽度和自身宽度中较大的一个,若自身宽度大于内容宽度(存在滚动条),则scrollWidth>clientWidth.
注意:该属性返回的是四舍五入后的整数值,如果需要小数,请用:Element.getBoundingClientRect().
- var xScrollWidth = element.scrollWidth;
scrollHeight:只读属性,返回该元素内容高度。包含被overflow隐藏掉的部分。包含padding,不包含margin.如果需要小数,请用:Element.getBoundingClientRect().
- var yScrollHeight = element.scrollHeight;
应用点:(判断元素是否滚动到底部,底下等式若返回 true ,则是,否则不是)
- element.scrollHeight - element.scrollTop === element.clientHeight;
scrollLeft:读取或设置元素滚动条到元素左边的距离。
- //获取滚动条到元素左边的距离
- var sLeft = element.scrollLeft;
- //设置滚动条滚动了多少像素
- element.scrollLeft = 10;
scrollTop:设置或获取该元素顶部距离其容器顶部的距离,无滚动条时为0。
- //获取滚动的高度(被卷去的高度)
- var intElementScrollTop = element.scrollTop;
- // 设置滚动的距离
- element.scrollTop = intValue;
兼容性代码如下:(获取、设置页面垂直方向的滚动距离!水平方向同理)(简易版)

- //获取滚轮滚动的距离,适配所有的浏览器
- function getScrollY(){
- return window.pageYOffset || document.documentElement.scrollTop;
- }
- //设置垂直方向滚轮滚动的距离,适配所有的浏览器,num为滚动距离
- function setScrollY(num){
- document.body.scrollTop = document.documentElement.scrollTop = num;
- }

总结:
由上面的两个兼容代码可以看出,我们总是把window下的scrollY(pageYoffset)、scrollX(pageXoffset)方法和element下的scrollTop、scrollLeft方法混在一起用,其实这两个是有本质区别的。一个获取的是window窗口的滚动距离,一个获取的是某一个元素的滚动距离,当获取的元素是body时,window.scrollY(window.pageYoffset) = document.body.scrollTop。
扩展:关于获取各种浏览器可见窗口大小的一点点研究

- <script>
- function getInfo()
- {
- var s = "";
- s += " 网页可见区域宽:"+ document.body.clientWidth;
- s += " 网页可见区域高:"+ document.body.clientHeight;
- s += " 网页可见区域宽:"+ document.body.offsetWidth + " (包括边线和滚动条的宽)";
- s += " 网页可见区域高:"+ document.body.offsetHeight + " (包括边线的宽)";
- s += " 网页正文全文宽:"+ document.body.scrollWidth;
- s += " 网页正文全文高:"+ document.body.scrollHeight;
- s += " 网页被卷去的高(ff):"+ document.body.scrollTop;
- s += " 网页被卷去的高(ie):"+ document.documentElement.scrollTop;
- s += " 网页被卷去的左:"+ document.body.scrollLeft;
- s += " 网页正文部分上:"+ window.screenTop;
- s += " 网页正文部分左:"+ window.screenLeft;
- s += " 屏幕分辨率的高:"+ window.screen.height;
- s += " 屏幕分辨率的宽:"+ window.screen.width;
- s += " 屏幕可用工作区高度:"+ window.screen.availHeight;
- s += " 屏幕可用工作区宽度:"+ window.screen.availWidth;
- s += " 你的屏幕设置是 "+ window.screen.colorDepth +" 位彩色";
- s += " 你的屏幕设置 "+ window.screen.deviceXDPI +" 像素/英寸";
- }
- </script>

扩展:准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top的代码:

- <script>
- var cWidth = cHeight = sWidth = sHeight = sLeft = sTop = 0;
- if (document.compatMode == “BackCompat”) {
- cWidth = document.body.clientWidth;
- cHeight = document.body.clientHeight;
- sWidth = document.body.scrollWidth;
- sHeight = document.body.scrollHeight;
- sLeft = document.body.scrollLeft;
- sTop = document.body.scrollTop;
- }
- else { //document.compatMode == “CSS1Compat”
- cWidth = document.documentElement.clientWidth;
- cHeight = document.documentElement.clientHeight;
- sWidth = document.documentElement.scrollWidth;
- sHeight = document.documentElement.scrollHeight;
- sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft;
- sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;
- }
- </script>

参考链接:
http://www.css88.com/archives/1767
http://www.css88.com/archives/90
https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTop
博客地址:http://www.cnblogs.com/zxjwlh
博主箴言:牛逼不可怕,可怕的是人家比你牛逼还比你努力!
scroll 方法 获取滚轴距离顶部高度的更多相关文章
- Delphi中三种方法获取Windows任务栏的高度
第一种:需要引用Windows单元 ShowMessage(IntToStr(GetSystemMetrics(SM_CYSCREEN)-GetSystemMetrics(SM_CYFULLSCREE ...
- Javascript&Jquery获取浏览器和屏幕各种高度宽度方法总结及运用
<js篇> Javascript获取浏览器和屏幕各种高度宽度方法总结 document.body.clientWidth //网页可见区域宽(body) document.bo ...
- JS获取滚动条距离顶部高度
一.jQuery获取的相关方法 jquery 获取滚动条高度 获取浏览器显示区域的高度 : $(window).height(); 获取浏览器显示区域的宽度 : $(window).width(); ...
- js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox
做web开发经常会碰到需要获取浏览器的滚动条与顶部和底部的距离,然后做相应的处理动作.下面作者就如何通过js来获取浏览器滚动条距离浏览器顶部和底部的高度做一下分享,这个是同时兼容ie和firefox的 ...
- 使用jquery中height()方法获取各种高度大全
alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height()); //浏览器当前窗口文档的高度 alert($(docum ...
- Javascript获取图片原始宽度和高度的方法详解
前言 网上关于利用Javascript获取图片原始宽度和高度的方法有很多,本文将再次给大家谈谈这个问题,或许会对一些人能有所帮助. 方法详解 页面中的img元素,想要获取它的原始尺寸,以宽度为例,可能 ...
- 如何在onCreate方法中获取视图的宽度和高度
你可以通过视图的getWidth()和getHeight()来获取视图的宽度和高度. 但是,可能会让你失望的是,如果你直接在onCreate方法内调用这两个函数,你会的到0. 为什么呢? 这是因为,当 ...
- js 和 jquery 获取页面和滚动条的高度 视口高度文档高度
js 和 jquery 获取页面和滚动条的高度 //页面位置及窗口大小 function GetPageSize() { var scrW, scrH; if(window.innerHeight & ...
- 获取DIV与浏览器顶部相聚一定位置之后移动DIV
获取元素(这里定位元素A)距离顶部的高度,接着设定scroll滚动的事件,比如超过那个高度,把A的位置设定为fixed,小于该高度,修改回relative. 方法一: $(function() { ...
随机推荐
- [Qt] Release模式下产生调试信息
分两步,设置Qt配置文件,设置VS. https://blog.csdn.net/itas109/article/details/83652387 F:\Qt\Qt5.7.1\5.7\msvc2015 ...
- 27.rm命令
rm命令可以删除指定的文件或目录.也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 选项:-f:强制删除. -r:递归处理,将指定目录下的 ...
- 为给定字符串生成MD5指纹
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache ...
- MYSQl 全表扫描以及查询性能
MYSQl 全表扫描以及查询性能 -- 本文章仅用于学习,记录 一. Mysql在一些情况下全表检索比索引查询更快: 1.表格数据很少,使用全表检索会比使用索引检索更快.一般当表格总数据小于10行并且 ...
- RF(数据库测试)
1.下载 DatabaseLibrary 库 pip install robotframework-databaselibrary 2.下载 pymysql 库(作为中间件) pip install ...
- VUE简单整理
在用 Vue.js 构建大型应用时推荐使用 NPM 安装: # 最新稳定版 $ cnpm install vue 命令行工具 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用. # 全 ...
- Linova and Kingdom(树型-贪心)
题目大意:给定一棵树,1为首都(首都可以是工业城市也可以是旅游城市),一共有n个点. 其中要选出k个工业城市,每个工业城市出一个代表去首都,其快乐值是其途径旅游城市(非工业)的个数 求所有快乐值相加的 ...
- JS实现手机号码中间4位变星号
这个问题,我们可以用截取字符串解决,以下我列出2种方法,小伙伴们可以根据自己的需要选择哦: ● 1,substring()方法用于提取字符串中介于两个指定下标之间的字符. '; //该号码是乱打出来的 ...
- HMM-前向后向算法理解与实现(python)
目录 基本要素 HMM三大问题 概率计算问题 前向算法 后向算法 前向-后向算法 基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,.. ...
- 单片机P0口
http://www.21ic.com/app/mcu/201307/186301.htm http://blog.csdn.net/zmq5411/article/details/6005977 h ...