外層html、body等設(shè)為不可滾動(dòng),ps:#app為vue項(xiàng)目基礎(chǔ)DOM;.wx-pages為App.vue內(nèi)部路由
html,body,#app,.wx-pages{
padding: 0;
margin: 0;
height: 100%;
overflow: hidden;
-webkit-overflow-scrolling: touch;
}
在public/index.html里移除touchmove事件
document.body.addEventListener('touchmove', function(e) {
e.preventDefault();
}, {
passive: false
});
寫Scroll組件
<style scoped="scoped">
.w-scroll {
height: 100%;
overflow: auto;
-webkit-overflow-scrolling: touch;
}
</style>
<template>
<div ref="scroll" class="w-scroll">
<slot></slot>
</div>
</template>
<script>
export default {
name: 'scroll',
data() {
return {}
},
computed: {},
mounted() {
this.wScroll(this.$refs.scroll);
},
methods: {
wScroll(elem) {
var startX = 0,startY = 0;
document.addEventListener('touchstart', function(evt) {
var touch = evt.touches[0];
startX = Number(touch.pageX);
startY = Number(touch.pageY);
});
elem.addEventListener('touchmove', function(ev) {
var _point = ev.touches[0],
_top = elem.scrollTop;
var _bottomFaVal = elem.scrollHeight - elem.offsetHeight;
//console.log(_top + ":" + _bottomFaVal + ":" + elem.offsetHeight + ":" + elem.scrollHeight);
if(_top === 0) {
if(_point.clientY > startY) {
ev.preventDefault();
} else {
ev.stopPropagation();
}
} else if(_top === _bottomFaVal) {
elem.scrollTop--;
} else if(_top > 0 && _top < _bottomFaVal) {
ev.stopPropagation();
} else {
ev.preventDefault();
}
}, {
passive: false
});
}
},
}
</script>
在需要滾動(dòng)的模塊中使用Scroll包起來
<style scoped>
</style>
<template>
<Scroll style="margin-bottom: 20px;background-color: #f2f2f2;">
內(nèi)容
</Scroll>
</template>
<script>
import Scroll from '@/components/Scroll';
export default {
components:{
Scroll
},
}
</script>
可以直接加到App.vue里面,可以直接解決全局此問題
<template>
<Scroll id="app">
<router-view class="wx-pages" />
</Scroll>
</template>
至此,完成,在微信瀏覽器中下拉不會(huì)再出現(xiàn)“網(wǎng)頁由XXX提供,QQ瀏覽器X5內(nèi)核提供技術(shù)支持”
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。