滚动条,可视化窗口宽高,

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 21:20   21   0

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>

控制台测试:

QQ浏览器截图_20180323141920_CFDE9AB1149743ebB8296180FEDAF875.jpg

可以获取元素的宽高。


查看元素的位置

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轴,要滚动多少像素。填写负数为反方向。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP