生命不休,bug不止。
今天在写有赞商城的时候又遇到了一个bug。
我需要的效果是这样的:
在页面滑动一段距离的时候,底部的一个小icon会显现出来,点击可以回到顶部。
image.png
代码实现逻辑是:
在vue父容器container绑定touchmove事件,因为是移动端,需要触摸滑动才触发事件。<div class="container with-top-search" @touchmove="move" id="app">
在move方法中做判断,如果滑动的距离大于100,就让show
变为true
,这个show
是用v-show
绑定在icon
上面的。<div class="go-to-top" v-show="show" @click="toTop" ></div>
move() {
if(document.body.scrollTop > 100) {
this.show = true
}else {
this.show = false
}
}
结果就出现bug了。console.log(document.body.scrollTop)
的值一直为0.
google了一下,原因如下:
- 页面指定了DTD,即指定了DOCTYPE时,使用document.documentElement。
- 页面没有DTD,即没指定DOCTYPE时,使用document.body。
而我指定了doctype所以应该改为
move() {
if(document.documentElement.scrollTop > 100) {
this.show = true
}else {
this.show = false
}
}
解决!
网友评论