|
1.查看滚动条的滚动距离 window.pageXOffset 屏幕的右侧,举例网页的左侧有多少像素
window.pageYOffset 屏幕的底端,距离网页的顶端有多少像素 不足:IE9和IE9以下不兼容
IE9以下如何获取滚动像素? document.body.scrollLeft document.body.scrollTop
document.documentElement.scrollLeft document.documentElement.scrollTop document.body和document.documentElement兼容性比较混乱,
当document.body能获取的时候document.documentElement肯定为0, 当document.documentElement能获取的时候,document.body肯定为0 所以在使用的时候经常这么来用: document.body.scrollLeft + document.documentElement.scrollLeft
小练习:封装一个getScrollOffset()方法解决兼容性问题,使所有版本浏览器都支持。 //兼容版 求浏览器滚动条滚动距离
function getScrollOffset() {
if(window.pageXOffset) {
return {
x : window.pageXOffset,
y : window.pageYOffset
}
}else {
return {
x : document.body.scrollLeft + document.documentElement.scrollLeft,
y : document.body.scrollTop + document.documentElement.scrollTop,
}
}
}
2.查看可视窗口的尺寸(像素)
window.innerWidth / window.innerHeight 可以查看屏幕当前可视的像素,并非屏幕大小。 不足:IE9以下不兼容
document.documentElement.clientWidth
document.documentElement.clientHeight
标准模式下,任意浏览器都支持。
document.body.clientWidth document.body.clientHeight 适用于怪异模式下的浏览器 (比如说h5的文档,把文档类型声明删除掉就是怪异模式...)
封装一个方法,返回浏览器可视化窗口尺寸getViewportOffset(),解决兼容性问题。 function getViewportOffset() {
if(window.innerWidth) {
return {
w : window.innerWidth,
h : window.innerHeight
}
}else {
if(document.compatMode === 'BackCompat'){
w : document.body.clientWidth;
h : document.body.clientHeight
} else {
return {
w : document.documentElement.clientWidth,
h : document.documentElement.clientHeight
}
}
}
}
查看元素的宽高 dom.offsetWidth dom.offsetHeight <style type="text/css">
#only{
background-color: red;
width: 100px;
height: 100px;
}
</style>
<body>
<div id="only"></div>
<script type="text/javascript">
var div = document.getElementsByTagName('div')[0];
</script>
</body>
控制台测试: 
可以获取元素的宽高。
查看元素的位置
dom.offsetLeft , dom.offsetTop 返回相对于与自己最近的有定位的父级元素的位置信息, 如果没有定位的父级元素,则相对于body的坐标。
返回最近的有定位的父级 dom.offsetParent 返回最近的有定位的父级,如果没有,返回body,body.offsetParent返回null
让滚动条滚动 widow上的三个方法 scroll(x,y),scrollTo(x,y) 这两个方法效果一样,小括号里填写的参数为xy为x轴和y轴,要滚到到多少像素的地方 scrollBy(x,y) 小括号里填写的参数为xy为x轴和y轴,要滚动多少像素。填写负数为反方向。 |