色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

vue實現(xiàn)錨點跳轉scrollIntoView()使用案例

瀏覽:5日期:2022-06-12 18:56:23
目錄vue實現(xiàn)錨點跳轉:scrollIntoView()說明:使用案例:vue錨點跳轉的三種方式(頁內(nèi)跳轉,跨頁跳轉,函數(shù)跳轉)1.需求2.跳轉錨點的基本方式2.1 頁面內(nèi)通過點擊來跳轉2.2 從A頁面跳轉到B頁面的指定錨點(錨點就在頁面上,不在子組件中)2.3 直接使用代碼進行錨點跳轉vue實現(xiàn)錨點跳轉:scrollIntoView()說明:

滾動到某個特定元素 :scrollIntoView();例如form表單或者div滾動到底部,

document.getElementsByClassName(‘’)或者document.getElementsById(‘’)

獲取到元素后即可實現(xiàn)回到可視化區(qū)域(也可理解為回到頂部)。

使用案例:<div> v-for='(value,index) in data' class='roll'>{{...}}</div>

js部分

methods:{ scrollToPosition(index){ document.getElementsByClassName('roll')[index].scrollIntoView()}

這樣就利用scrollIntoView()簡單實現(xiàn)了一個錨點跳轉,下邊講解scrollIntoView中的一些屬性:

scrollIntoView(true)相等于scrollIntoView();元素的頂端將和其所在滾動區(qū)的可視區(qū)域的頂端對齊為true時相應的 scrollIntoViewOptions: {block: “start”, inline:“nearest”}。這是這個參數(shù)的默認值。

scrollIntoView(false)元素的底端將和其所在滾動區(qū)的可視區(qū)域的底端對齊為false時相應的scrollIntoViewOptions: {block: “end”, inline: “nearest”}。

同時他的參數(shù)也可以配置成一個object對象

scrollIntoView({ behavior:auto //定義動畫過渡效果'auto'或 'smooth' 之一。默認為 'auto'。 block:start//定義垂直方向的對齊, 'start', 'center', 'end', 或 'nearest'之一。默認為 'start'。 inline:nearest//'start', 'center', 'end', 或 'nearest'之一。默認為 'nearest'。 })

其中smooth是平滑滾動 start和end是目標滾動到的位置

注意:兼容性的問題多數(shù)主流瀏覽器已經(jīng)支持其基本功能,也就是說,使用true,false兩個參數(shù),來實現(xiàn)木訥的定位(沒有滾動動畫)是沒有任何問題的,但是傳入object參數(shù)時,IE各種版本會直接忽略,全部看成true參數(shù)屬性,如果想看到滾動動畫,使用火狐和chrome。

vue錨點跳轉的三種方式(頁內(nèi)跳轉,跨頁跳轉,函數(shù)跳轉)1.需求

最近遇到一個需求,需要從一個頁面跳到另一個頁面的指定錨點,如果是頁面上的錨點還簡單,但是那個錨點在頁面的組件里面。所以稍微研究了一下

2.跳轉錨點的基本方式2.1 頁面內(nèi)通過點擊來跳轉

即添加一個a標簽,href以#開頭,然后在需要跳轉的地方添加一個element,id設置為a標簽href屬性相同的值,只是不要#,就可以了,這是最簡單的方式

<a >去找喵星人</a><h3 id='miao'>喵星人基地</h3>2.2 從A頁面跳轉到B頁面的指定錨點(錨點就在頁面上,不在子組件中)

我用的vue,所以在vue路由跳轉時只要在path后面加上#錨點就可以了,比如我要跳到B頁面id為miao的錨點,那么path=xxxx?#miao,當遇到query參數(shù)的情況,將#miao放到url的最后就行了,其他的也一樣,反正只要把錨點放在url最后就行了,然后進行跳轉即可

?this.$router.push({? ? ? ? ? ? path: `/detail?#miao`,? ? ? ? ? ? query: {? ? ? ? ? ? ? comment: `${commentId}`? ? ? ? ? ? }? ? ? ? ? })

注意:因為默認的vue單頁使用的是hash模式,以#作為路由分割標識符,就會導致有歧義而無法正常達到需求,如果你又不想使用history模式,那么就使用2.3的方式,使用代碼進行錨點跳轉

2.3 直接使用代碼進行錨點跳轉

有的情況,只能使用代碼進行錨點跳轉,比如從一個頁面跳到另一頁面子組件內(nèi)的指定錨點,這與2.2還是有區(qū)別的,我已經(jīng)試過,如果錨點在子組件內(nèi),不在當前路由頁面中,那么2.2的方式并不會起作用。解決方法:將錨點作為query屬性,或者其他的方式,將錨點的值傳給B頁面,然后B頁面再通過props的方式傳給他的子組件,最后在子組件中使用代碼進行錨點跳轉

// 這是傳到組件中的數(shù)據(jù)?props: {? ? ? commentId: String? }? mounted () {? // 判斷commentId 是否有值,如果沒有的話,就不進行跳轉,我這里就用'null'來判斷了,你們隨意? // document.querySelector用來獲取element,有個坑,id值不能全為數(shù)字,否則報錯,所以我在id值前面加了id,id格式大致是:id123456? // scrollIntoView就是用來跳轉到錨點的函數(shù)? ? ? ? if (this.commentId !== 'null') {? ? ? ? ? let inter = setInterval(() => {? ? ? ? ? ? let target = document.querySelector(`#id${this.commentId}`)? ? ? ? ? ? if (target) {? ? ? ? ? ? ? clearInterval(time)? ? ? ? ? ? ? target.scrollIntoView()? ? ? ? ? ? }? ? ? ? ? },100)? ? ? ? }? ? },

到此這篇關于vue實現(xiàn)錨點跳轉 scrollIntoView()的文章就介紹到這了,更多相關vue錨點跳轉 scrollIntoView()內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: JavaScript
主站蜘蛛池模板: 中文字幕综合 | 18在线观看国内精品视频 | 美女视频免费黄 | 国产精品反差婊在线观看 | 免费永久国产在线视频 | 国产在线观看一区精品 | 欧美xxxx色视频在线观看 | 欧美高清免费一级在线 | 美国大毛片 | 在线视频免费国产成人 | 亚洲国产精品久久 | 国产观看在线 | 亚洲欧美卡通成人制服动漫 | 大量真实偷拍情侣视频野战 | 污美女网站www在线观看 | 影音先锋色先锋女同另类 | 成人毛片免费网站 | 久久精品国产亚洲综合色 | 岛国大片在线播放高清 | 国产精品久久久久久久久久98 | 国产成人高清 | 精品欧美一区二区在线观看欧美熟 | 美女被躁免费视频软件 | 亚洲欧美国产视频 | 久久黄色片 | 性欧美videofree另类17 | 日本一区毛片免费观看 | 成人1000部免费观看视频 | 中文一级国产特级毛片视频 | 性欧美巨大的视频 | 欧美精品自拍 | 日本一级特黄a大片 | 一级毛片儿 | 亚州一二区| 男人天堂网站在线 | 国产一区二区三区视频在线观看 | 亚洲精品一区二区三区在线播放 | 国产理论视频在线观看 | 欧美肥婆videoxxx | 91免费观看视频 | 精品国产中文一级毛片在线看 |