vue+element實(shí)現(xiàn)錨點(diǎn)鏈接方式
vue+element錨點(diǎn)鏈接
代碼塊
<el-row id="userManagement">
<h1 @click="jump('userManagement')">用戶管理</h1>
<el-col :span="24">為了正常使用知產(chǎn)魔方,您需要在用戶管理模塊中,為代理所內(nèi)部用戶、外部用戶開(kāi)通知產(chǎn)魔方使用權(quán)限。</el-col>
</el-row>
export default {
methods:{
jump(domId){
// 當(dāng)前窗口正中心位置到指定dom位置的距離
//頁(yè)面滾動(dòng)了的距離
let height = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
//指定dom到頁(yè)面頂端的距離
let dom = document.getElementById(domId);
let domHeight = dom.offsetTop;
//滾動(dòng)距離計(jì)算
var S = Number(height) - Number(domHeight);
//判斷上滾還是下滾
if(S<0){
//下滾
S = Math.abs(S); //Math.abs返回一個(gè)數(shù)的絕對(duì)值
//window.scrollBy:把內(nèi)容滾動(dòng)到指定的像素?cái)?shù)
window.scrollBy({ top: S, behavior: "smooth" });
}else if(S==0){
//不滾
window.scrollBy({ top: 0, behavior: "smooth" });
}else{
//上滾
S = -S
window.scrollBy({ top: S, behavior: "smooth" });
}
}
},
created() {}
}
效果圖

vue+element錨點(diǎn)跳轉(zhuǎn)+自動(dòng)感應(yīng)導(dǎo)航欄
最近來(lái)個(gè)需求,要做一個(gè)頁(yè)面,每個(gè)模塊都是百分百全屏且右側(cè)有個(gè)導(dǎo)航欄能自動(dòng)感應(yīng)在哪個(gè)模塊,點(diǎn)擊也能直接跳轉(zhuǎn)到該錨點(diǎn)。
其實(shí)難點(diǎn)也就那幾個(gè),慢慢捋一下就好,話不多說(shuō)上代碼?。?/p>
1、錨點(diǎn)跳轉(zhuǎn)且點(diǎn)擊哪個(gè)會(huì)模塊右側(cè)導(dǎo)航欄就會(huì)高亮

我這個(gè)導(dǎo)航欄是因?yàn)槲磥?lái)增加模塊以免還要自己手動(dòng)加了就直接調(diào)接口循環(huán)了,如果是固定的直接寫死也行,看見(jiàn)那個(gè):key=“key”了沒(méi),對(duì),你想的沒(méi)錯(cuò),跟那個(gè)沒(méi)關(guān)系,好了,不開(kāi)玩笑了,那個(gè)給他動(dòng)態(tài)賦予class的屬性才是正確答案。
思路
使用循環(huán)的key與點(diǎn)擊后傳過(guò)去的key做對(duì)比,如果一樣的話就給他添加相應(yīng)的css。
具體實(shí)現(xiàn)
把傳過(guò)去的key賦值給一個(gè)data里面的變量例如:index,然后在標(biāo)簽里使用三目運(yùn)算符進(jìn)行判斷
這個(gè)也不算難點(diǎn) ,還有很多種實(shí)現(xiàn)方法,比如通過(guò)路由判斷、還有通過(guò)傳路由判斷,看個(gè)人喜歡與習(xí)慣吧。
2、關(guān)于翻頁(yè)自動(dòng)感應(yīng)
思路
前面說(shuō)了,我們是使用index來(lái)控導(dǎo)航欄中哪個(gè)模塊高亮的
當(dāng)鼠標(biāo)往下滾動(dòng)時(shí)讓整個(gè)頁(yè)面往下滾動(dòng)整個(gè)頁(yè)面的高度且index加一反之減一
具體實(shí)現(xiàn)
<div @mousewheel="mouseWheel"></div>
mouseWheel(e) {
if (e.wheelDelta || e.detail) {
if (e.wheelDelta > 0 || e.detail < 0) {
// 當(dāng)鼠標(biāo)向上滾動(dòng)時(shí)觸發(fā)
}
if (e.wheelDelta < 0 || e.detail > 0) {
// 當(dāng)鼠標(biāo)向下滾動(dòng)時(shí)觸發(fā)
}
}
}
在最外層容器中加入這個(gè)鼠標(biāo)觸發(fā)事件
然后就可以監(jiān)聽(tīng)鼠標(biāo)滾輪向上還是向下了
呃…想詳細(xì)了解的朋友自行百度哈,這里不過(guò)多贅述
當(dāng)鼠標(biāo)向下滾動(dòng)時(shí)我們使用
window.scrollTo(x,y);
來(lái)讓頁(yè)面進(jìn)行滾動(dòng)且讓index加一反則減一
這樣一來(lái)就能實(shí)現(xiàn)導(dǎo)航欄的自動(dòng)感應(yīng)了
但是要注重幾個(gè)細(xì)節(jié)問(wèn)題
- 第一、當(dāng)你到達(dá)了頂部或者底部時(shí)需要重置你的index
- 第二、你加的高度變量要重置
- 第三、滾到底部或者頂部時(shí)需要取消終止?jié)L動(dòng)函數(shù)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解vue結(jié)合el-table實(shí)現(xiàn)表格小計(jì)總計(jì)需求(summary-method)
這篇文章主要介紹了vue結(jié)合el-table實(shí)現(xiàn)表格小計(jì)總計(jì)需求(summary-method),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
解決vue?eslint開(kāi)發(fā)嚴(yán)格模式警告錯(cuò)誤的問(wèn)題
這篇文章主要介紹了解決vue?eslint開(kāi)發(fā)嚴(yán)格模式警告錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue3.0實(shí)現(xiàn)無(wú)限級(jí)菜單
這篇文章主要為大家詳細(xì)介紹了基于Vue3.0實(shí)現(xiàn)無(wú)限級(jí)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
基于vue實(shí)現(xiàn)swipe輪播組件實(shí)例代碼
本篇文章主要介紹了基于vue實(shí)現(xiàn)swipe輪播組件實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
代替Vue?Cli的全新腳手架工具create?vue示例解析
這篇文章主要為大家介紹了代替Vue?Cli的全新腳手架工具create?vue示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
記錄一個(gè)van-list不斷onLoad加載的坑及解決
這篇文章主要介紹了記錄一個(gè)van-list不斷onLoad加載的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
uniapp中使用u-loadmore,loadText內(nèi)容不隨status改變刷新方式
這篇文章主要介紹了uniapp中使用u-loadmore,loadText內(nèi)容不隨status改變刷新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

