首页 > 建站教程 > JS、jQ、TS >  scrollIntoView解决在Vue、React的Hask路由中使用锚点功能正文

scrollIntoView解决在Vue、React的Hask路由中使用锚点功能

Vue、React等框架使用了hash路由(history路由没关系),url中必须有#号,但是又需要使用锚点定位,从而产生冲突,此时就不能使用#锚点,但又要实现锚点功能,可以借助js的scrollIntoView方法

function MyLink({id, children}) {
  const onClick = (e) => {
    e.preventDefault();
    const element = document.getElementById(id);
    // scrollIntoView()将目标元素移动到浏览器顶部
    // scrollIntoView(false)将目标元素移动到浏览器底部
    element.scrollIntoView();
  }
  return {children} }
element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean型参数
element.scrollIntoView(scrollIntoViewOptions); // Object型参数

scrollIntoView参数:

    alignToTop: 一个boolean值

    true:等价于 scrollIntoViewOptions: {block: “start”, inline: “nearest”}

    false:等价于scrollIntoViewOptions: {block: “end”, inline: “nearest”}

    scrollIntoViewOptions: 对象

    behavior: 定义动画过度效果, ‘auto / smooth’ , 默认 ‘auto’

    block:定义垂直方向的对齐, “start / center / end / nearest”。默认为 “start”。

    inline 定义水平方向的对齐, “start / center / end / nearest”。默认为 “nearest”