Vue滾動(dòng)頁面到指定位置的實(shí)現(xiàn)及避坑
Vue滾動(dòng)頁面到指定位置
在Vue中,有三種方式可以實(shí)現(xiàn)H5頁面滑動(dòng)至指定位置
方法1
//先獲取目標(biāo)位置距離
mounted() {
? this.$nextTick(() => {
? ? ?setTimeout(() => {
? ? ? ? let targetbox= document.getElementById('targetbox');
? ? ? ? this.target= targetbox.offsetTop; ? ? ? ?
? ?})
? })
}
//再滑動(dòng)指定距離
document.body.scrollTop = this.target;方法2
this.$nextTick(() => {
? ? ?this.$refs.DOM.scrollTo(0,200);
})方法3
document.getElementById("target").scrollIntoView();
避坑指南
方法1,滑動(dòng)至的元素不能是display:none,存在兼容問題,親測(cè)在部分ios機(jī)子上document.body.scrollTop滑動(dòng)無效。
方法2,未親測(cè)過,但在this.$nextTick(()里執(zhí)行滑動(dòng),感覺有點(diǎn)麻煩。
方法3,親測(cè)可用,ios和android都可。只是要注意,如果頁面有監(jiān)聽scroll事件,scrollIntoView也會(huì)觸發(fā)scroll事件的。
滾動(dòng)頁面到一定距離后固定
1.id名為testNavBar的盒子與:class=’{ fixedNavbar: isfixTab }'的盒子可以是包含關(guān)系也可以是并列關(guān)系
?<div id='testNavBar'></div>
? ? ? <div class="container " ?:class='{ fixedNavbar: isfixTab ?}'>
? ?</div>或者
<div id='testNavBar'>
?? ?<div :class='{ fixedNavbar: isfixTab }'>這是導(dǎo)航</div>
</div>2.fixedNavbar是類名
.fixedNavbar {
? ? ? background-color: #f3f3f3;
? ? ? position: fixed;
? ? ? width: 100%;
? ? ? z-index: 2032;
? ? ? top: 0;
? ? ? left: 0;
? ? ? padding-bottom: 10px;
? ? }3.isfixTab 是控制是否加類名
?data() {
? ? return {
? ? ? isnavshow: false,
? ? ? cateList:[],
? ? ? cateInfo:[],
? ? ? config_list:{},
? ? ? isfixTab:false
? ? }
? },4.在mounted中監(jiān)聽頁面滾動(dòng)事件,并調(diào)用handleTabFix() 方法
? // 監(jiān)聽頁面滾動(dòng)
? ? mounted () {
? ? ? ? window.addEventListener('scroll', this.handleTabFix, true)
? ? },
? ? //離開當(dāng)前組件前一定要清除滾動(dòng)監(jiān)聽,否則進(jìn)入其他路由會(huì)報(bào)錯(cuò)
? ? beforeRouteLeave (to, from, next) {
? ? ? window.removeEventListener('scroll', this.handleTabFix, true)
? ? ? next()
? ? },5.聲明一個(gè)方法handleTabFix()
?// 先分別獲得id為testNavBar的元素距離頂部的距離和頁面滾動(dòng)的距離
?? ? ? ?// 比較他們的大小來確定是否添加fixedNavbar樣式
? ? handleTabFix() {
? ? ? var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
? ? ? var offsetTop = document.querySelector('#testNavBar').offsetTop
? ? ? scrollTop > offsetTop ? this.isfixTab = true : this.isfixTab = false
? ? }以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決Vue頁面固定滾動(dòng)位置的處理辦法
- Vue實(shí)現(xiàn)渲染數(shù)據(jù)后控制滾動(dòng)條位置(推薦)
- vue實(shí)現(xiàn)滾動(dòng)條到頂部或者到指定位置
- vue中實(shí)現(xiàn)點(diǎn)擊按鈕滾動(dòng)到頁面對(duì)應(yīng)位置的方法(使用c3平滑屬性實(shí)現(xiàn))
- vue監(jiān)聽頁面中的某個(gè)div的滾動(dòng)事件并判斷滾動(dòng)的位置
- Vue滾動(dòng)到指定位置的多種方式示例詳解
- Vue列表如何實(shí)現(xiàn)滾動(dòng)到指定位置樣式改變效果
- 解決vue無法設(shè)置滾動(dòng)位置的問題
- vue通過滾動(dòng)行為實(shí)現(xiàn)從列表到詳情,返回列表原位置的方法
- vue-scroller記錄滾動(dòng)位置的示例代碼
- Vue頁面返回滾動(dòng)位置恢復(fù)(keep-alive滾動(dòng)記憶)
相關(guān)文章
vue 使用rules對(duì)表單字段進(jìn)行校驗(yàn)的步驟
這篇文章主要介紹了vue 使用rules對(duì)表單字段進(jìn)行校驗(yàn)的步驟,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-12-12
vue深入解析之render function code詳解
vue對(duì)大家來說應(yīng)該再熟悉不過了,下面這篇文章主要給大家深入的解析了vue之render function code的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07
vue cli實(shí)現(xiàn)項(xiàng)目登陸頁面流程詳解
CLI是一個(gè)全局安裝的npm包,提供了終端里的vue命令。它可以通過vue create快速搭建一個(gè)新項(xiàng)目,或者直接通過vue serve構(gòu)建新想法的原型。你也可以通過vue ui通過一套圖形化界面管理你的所有項(xiàng)目2022-10-10
使用idea創(chuàng)建第一個(gè)Vue項(xiàng)目
最近在學(xué)習(xí)vue,本文主要介紹了使用idea創(chuàng)建第一個(gè)Vue項(xiàng)目,文中根據(jù)圖文介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Vue如何實(shí)現(xiàn)變量表達(dá)式選擇器
這篇文章主要介紹了Vue如何實(shí)現(xiàn)變量表達(dá)式選擇器,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下2021-02-02

