實(shí)現(xiàn)錨點(diǎn)滾動(dòng)甚垦,不要使用<a>標(biāo)簽茶鹃,會(huì)引發(fā)路由跳轉(zhuǎn)。
我們使用H5的新增API艰亮,scrollToAnchor
以前使用<a>標(biāo)簽的方法
<a href='#activity1'></a> //定義錨點(diǎn)
<div name='activity1'></div> //跳轉(zhuǎn)到的錨點(diǎn)
但是在單頁面中闭翩,這樣會(huì)進(jìn)行前端路由的修改
使用scrollToAnchor API進(jìn)行修改
<a onClick={() => this.scrollToAnchor(name)}></a> //定義錨點(diǎn)
<div id='activity1'></div> //跳轉(zhuǎn)到的錨點(diǎn)
//函數(shù)定義
scrollToAnchor = (anchorName) => {
if (anchorName) {
// 找到錨點(diǎn)
let anchorElement = document.getElementById(anchorName);
// 如果對(duì)應(yīng)id的錨點(diǎn)存在,就跳轉(zhuǎn)到錨點(diǎn)
if(anchorElement) { anchorElement.scrollIntoView({block: 'start', behavior: 'smooth'}); }
}
}
block:表示滾動(dòng)到錨點(diǎn)的頂部或者底部迄埃,start/end
behavior:表示滾動(dòng)的效果疗韵,auto/instant/smooth(滾動(dòng)效果)
1.將錨點(diǎn)用傳統(tǒng)的name屬性,改成id屬性侄非。這樣我們就可以用document.getElementById方法方便的查詢查詢到錨點(diǎn)蕉汪。
2.將原來的紅色按鈕的href屬性去掉,然后添加一個(gè)onClick方法逞怨。onClick方法傳入一個(gè)錨點(diǎn)的id者疤,然后用下面的函數(shù)來找到錨點(diǎn)并跳轉(zhuǎn)到錨點(diǎn)。