欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue跳轉時根據(jù)url錨點(#xxx)實現(xiàn)頁面內容定位的方法

 更新時間:2024年04月30日 08:44:43   作者:前端炒粉仔  
本前端仔在做頁面跳轉的時候,被要求跳轉到頁面時候,把對應部分的內容自動滾動到頂部,我一開始想到的就是根據(jù)錨點<a href="#xxid">進行處理,但是發(fā)現(xiàn)不太好實現(xiàn),于是便自己研究了一個比較取巧的方法,需要的朋友可以參考下

介紹

本前端仔在做頁面跳轉的時候,被要求跳轉到頁面時候,把對應部分的內容自動滾動到頂部~

我一開始想到的就是根據(jù)錨點<a href="#xxid">進行處理,但是發(fā)現(xiàn)不太好實現(xiàn)~

于是便自己研究了一個比較取巧的方法

一、實現(xiàn)原理

為了能夠方便處理這個跳轉邏輯,我首先就想要把定位的錨點放到 url 上面,

事實上很多網(wǎng)站都是這樣做的,比如掘金就是這樣做的:

http://www.dbjr.com.cn/server/320459u0g.htm#heading-2

上面的鏈接中 # 后面拼接的就是定位的錨點,這種就是給頁面對應位置的標簽添加 id 即可

但是我的項目要定位的地方在一個子組件的滾動區(qū)域內,觸發(fā)不了這個自動滾動效果,不知道為啥~

于是我便使用 watch 進行監(jiān)聽,如果發(fā)現(xiàn)url中存在錨點,也就是#拼接的字符串,就根據(jù)這個字符串為id獲取對應的元素,然后將其進行滾動~

二、代碼(vue3 setup)

1、首先在需要跳轉的頁面的父組件上進行監(jiān)聽,最好是頁面框架組件,這樣這個監(jiān)聽效果會一直存在:

import { watch, nextTick } from 'vue';
import { useRoute } from 'vue-router';

const route = useRoute();

// 監(jiān)聽路由變化,滾動到對應位置
watch(() => route.hash, (newVal, oldVal) => {
    let hash = window.location.hash;
    // hash 刪除第一個字符(當前項目是hsah模式)
    hash = hash.slice(1);
    if(hash.indexOf('#') != -1) {
        nextTick(() => {
            let id = hash.split('#')[1];
            id = decodeURIComponent(id);
            let el = document.getElementById(id);
            console.log('滾動到:', id, el)
            if(el) {
                // 平滑滾動
                setTimeout(() => {
                    el.scrollIntoView({behavior: 'smooth'});
                }, 0);
            }
        })
    }
})

由于我的項目路由是哈希模式,于是便先清除一個#,接著便獲取到錨點id,然后獲取對應的標簽,最后進行滾動 為啥使用setTimeout呢?因為vue的數(shù)據(jù)更新會有延遲的,代碼并不會立即執(zhí)行,因此使用定時器把這次滾動推遲到下一個事件循環(huán),確保成功觸發(fā)~

2、在對應的子組件中,也就是滾動容器組件,只需要給對應的位置的標簽添加 id 即可

3、使用方法,router 跳轉:

import { useRouter } from 'vue-router';
const router = useRouter()

// 跳轉
router.push({ path: '/xxx/xxxxx', hash: '#位置'})

三、演示:

四、結束

到此這篇關于vue跳轉時根據(jù)url錨點(#xxx)實現(xiàn)頁面內容定位的方法的文章就介紹到這了,更多相關vue根據(jù)url錨點定位內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決echarts中橫坐標值顯示不全(自動隱藏)問題

    解決echarts中橫坐標值顯示不全(自動隱藏)問題

    這篇文章主要介紹了解決echarts中橫坐標值顯示不全(自動隱藏)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue定義全局變量和全局方法的方法示例

    vue定義全局變量和全局方法的方法示例

    這篇文章主要介紹了vue定義全局變量和全局方法的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式簡單總結

    vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式簡單總結

    在做開發(fā)中都會遇到的需求,每個用戶的權限是不一樣的,那他可以訪問的頁面(路由)可以操作的菜單選項是不一樣的,如果由后端控制,我們前端需要去實現(xiàn)動態(tài)路由,動態(tài)渲染側邊菜單欄,這篇文章主要給大家介紹了關于vue3實現(xiàn)動態(tài)側邊菜單欄的幾種方式,需要的朋友可以參考下
    2024-02-02
  • 如何設置Vue全局公共方法

    如何設置Vue全局公共方法

    這篇文章主要介紹了如何設置Vue全局公共方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 通過vue提供的keep-alive減少對服務器的請求次數(shù)

    通過vue提供的keep-alive減少對服務器的請求次數(shù)

    這篇文章主要介紹了通過vue提供的keep-alive減少對服務器的請求次數(shù),文中給大家補充介紹了vue路由開啟keep-alive時的注意點,需要的朋友可以參考下
    2018-04-04
  • 在項目vue中使用echarts的操作步驟

    在項目vue中使用echarts的操作步驟

    這篇文章主要介紹了在項目vue中使用echarts的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 利用Vue3 (一)創(chuàng)建Vue CLI 項目

    利用Vue3 (一)創(chuàng)建Vue CLI 項目

    這篇文章主要介紹利用Vue3 創(chuàng)建Vue CLI 項目,下面文章內容附有官方文檔鏈接,安裝過程,需要的可以參考一下
    2021-10-10
  • vuex如何修改狀態(tài)state的方法

    vuex如何修改狀態(tài)state的方法

    這篇文章主要介紹了vuex如何修改狀態(tài)state的方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • el-select 點擊按鈕滾動到選擇框頂部的實現(xiàn)代碼

    el-select 點擊按鈕滾動到選擇框頂部的實現(xiàn)代碼

    本文通過實例代碼給大家分享el-select 點擊按鈕滾動到選擇框頂部效果,主要代碼是在visibleChange在這個popper里面找到.el-select-dropdown__list,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • vue任意關系組件通信與跨組件監(jiān)聽狀態(tài)vue-communication

    vue任意關系組件通信與跨組件監(jiān)聽狀態(tài)vue-communication

    這篇文章主要介紹了vue任意關系組件通信與跨組件監(jiān)聽狀態(tài)vue-communication,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10

最新評論