這篇文章主要為大家展示了“vue+導航錨點聯(lián)動-滾動監(jiān)聽和點擊平滑滾動跳轉的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“vue+導航錨點聯(lián)動-滾動監(jiān)聽和點擊平滑滾動跳轉的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)是一家專業(yè)提供綿竹企業(yè)網站建設,專注與成都做網站、成都網站制作、H5開發(fā)、小程序制作等業(yè)務。10年已為綿竹眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網絡公司優(yōu)惠進行中。最終效果如下:(注意需要做錨點聯(lián)動的部分并不在頁面的頂部而是頁面的某個div內)-chrome
完成這個功能需要注意:
1、點擊導航平滑滾動到導航內容處
2、div內滾動時當前導航需要做響應
代碼如下:
1、html結構(因為從項目里截取代碼數(shù)據(jù)內容就不貼出來了,不算難點,這個可以根據(jù)自己的項目進行調整,相應的方法和類名別弄錯就行)
<div class="all-title"> 全部應用 <p class="fr"> <span v-for="(item, index) in allMenuList" :key="item.id" :class="[index===activeMenu?'active':'']" @click="jump(index)">{{ item.name }}</span> </p> </div> <div id="scrollBox" class="applications-content"> <div v-for="(val, index) in allMenuList" :key="val.id" class="all-list do-jump"> <p class="applications-title">{{ val.name }}</p> <ul class="applications-list"> <li v-for="item in val.children" :key="item.id" class="applications-item" @click="changeRouterForRight(item.pathName,item.menuCode)"> <img src=""> <span>{{ item.name }}</span> <template v-if="showEdit"> <i v-if="addOrRemove(item.menuCode)==0" class="el-icon-circle-plus add-btn" @click="addMenu(item.menuCode)" /> <i v-if="addOrRemove(item.menuCode)==1" class="el-icon-remove remove-btn" @click="removeMenu(item.menuCode)" /> </template> </li> </ul> </div> </div>
需要說明的數(shù)據(jù):activeMenu-當前導航序號,scrollBox-需要在里面滾動的元素即設為overflow-y:scroll的父元素div
2、點擊導航平滑滾動的方法:jump(index)
// 跳轉 jump(index) { this.activeMenu = index // 當前導航 const jump = jQuery('.do-jump').eq(index) const scrollTop = jump.position().top + this.scrollBox.scrollTop // 獲取需要滾動的距離 // Chrome this.scrollBox.scrollTo({ top: scrollTop, behavior: 'smooth' // 平滑滾動 }) }
這里有兩點需要說明:一是因為我vue項目里裝了jquery所以這里直接用了jquery的position().top來獲取元素到父元素的距離,如果項目里沒裝jquery需要把這里換成js的方法來獲取元素到父元素的距離(萬事有Google和度娘),二是點擊之后需要滾動的距離計算時別忘了加上當前div已經滾動的距離即已經被卷起的高度
-----到這里我們就可以實現(xiàn)1的功能
3、監(jiān)聽scrollBox的滾動:
寫在mounted里
// 獲取滾動dom元素 this.scrollBox = document.getElementById('scrollBox') const jump = jQuery('.do-jump') const topArr = [] for (let i = 0; i < jump.length; i++) { topArr.push(jump.eq(i).position().top) } // 監(jiān)聽dom元素的scroll事件 this.scrollBox.addEventListener('scroll', () => { const current_offset_top = that.scrollBox.scrollTop for (let i = 0; i < topArr.length; i++) { if (current_offset_top <= topArr[i]) { // 根據(jù)滾動距離判斷應該滾動到第幾個導航的位置 that.activeMenu = i break } } }, true)
這里需要注意addEventListener里有三個參數(shù):'scroll' 、function、true
以上是“vue+導航錨點聯(lián)動-滾動監(jiān)聽和點擊平滑滾動跳轉的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)成都網站設計公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
標題名稱:vue+導航錨點聯(lián)動-滾動監(jiān)聽和點擊平滑滾動跳轉的示例分析-創(chuàng)新互聯(lián)
網頁路徑:http://jinyejixie.com/article30/ccehso.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供自適應網站、做網站、網站維護、外貿網站建設、品牌網站制作、移動網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容