最近接到一个需求,中途需要动态设置滚动条的 scrolltop 值,发现在 PC 上都没问题,然而上测试环境,各种问题,页面老是不按照设想的那样,最终发现是移动端对滚动条的处理不一致导致。
DEMO:
window.onload = function() {
window.addEventListener("scroll", function() {
var a = document.documentElement.scrollTop;
var b = document.body.scrollTop;
document.getElementById("win").innerText = a + "/" + b;
});
document.addEventListener("scroll", function() {
var a = document.documentElement.scrollTop;
var b = document.body.scrollTop;
document.getElementById("doc").innerText = a + "/" + b;
})
}
监听滚动条事件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/reset.css" />
<style type="text/css">
body {
width: 100%;
height: auto;
position: relative;
}
.main {
width: 100%;
}
.fix {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 200px;
background: red;
text-align: center;
line-height: 50px;
font-size: 40px;
}
</style>
<script type="text/javascript">
window.onload = function() {
window.addEventListener("scroll", function() {
var a = document.documentElement.scrollTop;
var b = document.body.scrollTop;
document.getElementById("win").innerText = a + "/" + b;
});
document.addEventListener("scroll", function() {
var a = document.documentElement.scrollTop;
var b = document.body.scrollTop;
document.getElementById("doc").innerText = a + "/" + b;
})
}
</script>
</head>
<body>
<div class="fix">
<h4>window.addEventListener:<span></span></h4><br />
<h4>document.addEventListenerspan:<span></span></h4>
</div>
<div class="main">
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
<h1>11111111111</h1>
<h1>22222222222</h1>
<h1>33333333333</h1>
<h1>44444444444</h1>
<h1>55555555555</h1>
</div>
</body>
</html>
PC上:

手机上:

看到了吗,就是折磨啃爹,所以移动端需要设置滚动条请使用 document.body.scrollTop,PC上使用 document.documentElement.scrollTop。

