使用scrollIntoView方法進行定位到某一位置
這里直接開門見山,最近在segmentfault中看到了這個簡單方法,就是用scrollIntoView方法就可以實現錨點定位,非常簡單,在此記錄一下
可以直接使用(當然像在vue中也可以使用ref獲取dom)
// 如果為true,元素的頂端將和其所在滾動區的可視區域的頂端對齊。
// 如果為false,元素的底端將和其所在滾動區的可視區域的底端對齊。
document.querySelector('#需要定位的ID').scrollIntoView(true)
也可以配置參數定位的位置和動畫效果
document.querySelector('#需要定位的ID').scrollIntoView({
behavior: "smooth", // 定義動畫過渡效果, "auto"或 "smooth" 之一。默認為 "auto"
block: "center", // 定義垂直方向的對齊, "start", "center", "end", 或 "nearest"之一。默認為 "start"
inline: "nearest" // 定義水平方向的對齊, "start", "center", "end", 或 "nearest"之一。默認為 "nearest"
})
傳統的錨點定位
html本身就有錨點定位的功能,在html頁面內可以設置錨點,通過a鏈接進行跳轉即可
如html中定義一個錨點,這里可以用name或者id
<ul>
<li id="anchor1">錨點1</li>
<li id="anchor2">錨點2</li>
<li id="anchor3">錨點3</li>
</ul>
錨點使用
<a href="#anchor1">跳至第一個錨點</a>
在js中可以通過location跳轉
window.location.href = "#anchor1" // 跳至第一個錨點
// 或者
window.location.hash = "#anchor1" // 跳至第一個錨點
注意:hash只會在跳轉到此頁面的第一次起作用,再次刷新此頁面將不起作用,而href始終起作用