點擊導航欄目在頁面內部跳轉;
在普通的html文檔中 ,頁面內部的錨點跳轉,我們通常使用 a 標簽 ,同時在需要跳轉到的位置 ,要設置一個錨點(很形象的理解,漁船出海要停船了,防止漂走,要拋錨大笑),怎么設置錨點,對應的元素 id="錨點id",如法一
紅寶書練習
div1
div2
div3
這種方法的缺點 頁面的URL 會發生變化 如URL :file:///C:/Users/31295/Desktop/html5實例/紅寶書練習.html#div1,當點擊上方,頁面內部跳轉,同時上方URL的標紅部分也會發生變化 (這不是我們想要的)
方法二,在js事件中通過window.location.hash="divId" ,改變# 號后面的 值 但地址也會發生變化,感覺跟第一種方法沒區別,甚至更麻煩。
方法三,利用Element.scrollIntoView()方法,讓元素滾動到瀏覽器的窗口可視區域,先看下方法對應的參數
element.scrollIntoView(align-top); // Boolean型參數 element.scrollIntoView()默認參數true;
element.scrollIntoView(scrollIntoViewOptions); // Object型參數
1.Element.scrollIntoView() 等同于 Element.scrollIntoView(true) 也即默認值true,表示元素的頂端和瀏覽器可視區域的頂端對齊。
2.Element.scrollIntoView(false) 表示元素的底端和瀏覽器可視區域的底端對齊。
scrollIntoViewOptions(Object型參數)
{
behavior: "auto" | "instant" | "smooth",
block: "start" | "end",
}
1.block:"start" 相當于true,block:"end" 相當于false。
2.behavior能控制頁面跳轉的快慢 ,auto 和instant 都是立即直接跳轉到所在錨點,不夠友好,smooth表示平滑過渡到所在錨點。
在react應用中,由于url 變化會觸及路由跳轉,所以第三種方法優選,怎么寫呢?
scrollToAnchor = (anchorName) => {
if (anchorName) {
// 找到錨點
let anchorElement = document.getElementById(anchorName);
//如果對應的id錨點存在就跳轉
if (anchorElement) {
anchorElement.scrollIntoView({block: 'start', behavior: 'smooth'});
}
}
本文《網站制作中導航欄目在網站內部跳轉實現方式》發布于君君營銷文章,作者:admin,如若轉載,請注明出處:/news/hyzx/101717.html,否則禁止轉載,謝謝配合!