8.04 今天在写作业的时候用到ScrollTop来获取滚动条的高度,以达到按按钮后回到顶部的效果。
在写的过程中发现ScrollTop无论如何都为0,后来查了一下好像是因为谷歌浏览器的兼容问题。
解决过程如下:
一开始的代码为:
// 获取可视窗口的高度
var viewHeight = document.documentElement.clientHeight;
// 获取btn
var toTop = document.getElementById('btn');
//获取滚动条高度
var scrollHeight = document.documentElement.scrollTop || document.body.scrollTop;
// 当滚动条高度大于可视窗口高度时,显示“回到顶部”标志
if(scrollHeight >= viewHeight){
toTop.style.display = 'block';
}else{
toTop.style.display = 'none';
}
// 点击按钮后图标改变,并且回到最上边
toTop.onclick = function() {
toTop.style.backgroundImage = 'url("/images/huojian2.jpg")';
document.documentElement.scrollTop = 0;
}
解决代码如下:
// 获取可视窗口的高度
var viewHeight = document.documentElement.clientHeight;
// 获取btn
var toTop = document.getElementById('btn');
window.onscroll = function() {
//获取滚动条到顶部的垂直高度
var scrollHeight = document.documentElement.scrollTop || document.body.scrollTop;
// 当滚动条高度大于可视窗口高度时,显示“回到顶部”标志
if(scrollHeight >= viewHeight){
toTop.style.display = 'block';
}else{
toTop.style.display = 'none';
}
// 点击按钮后图标改变,并且回到最上边
toTop.onclick = function() {
toTop.style.backgroundImage = 'url("/images/huojian2.jpg")';
document.documentElement.scrollTop = 0;
}
}
即要将scrollTop放在window.onscroll = function() {}中,虽然我还不太懂为啥,但是这样确实解决了。
最后在写的时候还遇到一些问题:
- toTop.style.backgroundImage:这里不能直接放上图片的路径,还要加上url。
- 点击按钮后回到最顶部这里不能直接用之前定义的scrollHeight赋值0,而是要重新给document.documentElement.scrollTop赋值为0