vue項目設(shè)置scrollTop不起作用(總結(jié))
今天在開發(fā)中,遇到這樣一個情景。一個頁面中有三個模塊,每個模塊對應(yīng)一個標題,每個模塊內(nèi)容都很長,所以需要點擊當前模塊對應(yīng)的標題滾動到模塊所在位置。
我想的方案是獲取到每個模塊距離文檔頂部的距離,然后將值賦給對應(yīng)要滾動的元素。 步驟如下:
首先給每個模塊一個id,例如:
<div class="module module1" id="anchor-0"> <div class="module module1" id="anchor-1"> <div class="module module1" id="anchor-2">
點擊每個標題的時候獲取到當前模塊的id
<a v-for="(navItem,index) in navData" :key="index" class="navItem" :class="{active:index == i }" @click="goAnchor('#anchor-'+index)">{{navItem.name}}</a>
methods: {
// tab點擊滾動
goAnchor(val) {
let anchor = this.$el.querySelector(val);
}
*最后就可以獲取每個模塊距離文檔頂部的距離了,然后賦值給對應(yīng)要滾動的元素就可以了
methods: {
// tab滾動
goAnchor(val) {
let anchor = this.$el.querySelector(val);
this.$nextTick(() => {
document.querySelector(".el-main").scrollTop = anchor.offsetTop;
});
},
切記:在這里一定要加上this.$nextTick()方法,否則document.querySelector(“.el-main”).scrollTop的值永遠為0,不會賦值成功的!
container.scrollTop 一直為0不能賦值的解決方法
watch: {
historyList () {
this.$nextTick(() => {
const container = this.$el.querySelector('.scrolldivmain')
console.log(container.scrollHeight)
console.log(container.scrollTop)
this.$refs.scrolldiv.scrollTo(0, container.scrollHeight + 'px')
container.scrollTop = container.scrollHeight
container.scrollTop(0, container.scrollHeight)
console.log(container.scrollTop) // container.scrollTop 一直為0
})
}
}
注意點
確定下滾動條是在哪里顯示的
有個方法判斷下:
window.addEventListener('scroll', () => {
var scrollTop = this.$el.querySelector('.scrolldivmain')
// console.log(scrollTop.scrollHeight)
console.log(scrollTop.scrollTop) // 查看打印的值是否有變化 如果有 則說明滾滾動條在這個標簽中
// scrollTop.scrollTop = scrollTop.scrollHeight // 可以嘗試下 滾動滾動條。一直在底部則可以設(shè)置成功
}, true)
解決方案
需要用到的地方 調(diào)用this.scrollToBottom()即可
<!--element-ui-->
<el-main class="scrolldivmain">
some code
</el-main>
methods: {
// 滾動到底部
scrollToBottom () {
this.$nextTick(() => {
setTimeout(() => {
var scrollTop = this.$el.querySelector('.scrolldivmain')
scrollTop.scrollTop = scrollTop.scrollHeight
}, 13)
})
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項目實現(xiàn)webpack配置代理,解決跨域問題
這篇文章主要介紹了vue項目實現(xiàn)webpack配置代理,解決跨域問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
vue項目打包后,由于html被緩存導致出現(xiàn)白屏的處理方案
這篇文章主要介紹了vue項目打包后,由于html被緩存導致出現(xiàn)白屏的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
vue3使用Electron打包成exe的方法與打包報錯解決
在前端開發(fā)中,Electron是一種常用的工具,它允許開發(fā)者使用Web技術(shù)構(gòu)建桌面應(yīng)用程序,本文主要介紹了vue3使用Electron打包成exe的方法與打包報錯解決,具有一定的參考價值,感興趣的可以了解一下2024-06-06
vue+axios?methods方法return取不到值問題及解決
這篇文章主要介紹了vue+axios?methods方法return取不到值問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10

