javascript - html offsetTop 的替代方案

标签 javascript html reactjs dom

我在我的解决方案中使用了 offsetTop,如下所示。

public getOffsetTop = element => {
       let offsetTop = 0;
       while (element) {
         offsetTop += element.offsetTop;
         element = element.offsetParent;
       }
    return offsetTop;
  };

const field = document.getElementById("error");
const totalOffsetTop = this.getOffsetTop(field);

window.scrollTo({
        top: totalOffsetTop,
        behavior: "smooth"
      });

这工作很顺利。每当出现错误时,我都可以自动滚动回错误字段。 然而,真正的问题是在这里。 offsetTop 是实验性的,不应在生产中使用。 https://caniuse.com/#feat=mdn-api_htmlelement_offsettop

我尝试使用 getBoundingClientRect().top 但它不会滚动回错误字段。任何人都可以建议更好的选择吗?

最佳答案

怎么样Element.scrollIntoView()

你可以:

document.getElementById("error").scrollIntoView({ behavior: 'smooth' });

关于javascript - html offsetTop 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59586599/

相关文章:

javascript - react 子组件正在覆盖 redux 状态

javascript - 丢弃以连字符开头的 4 位数字

javascript - 只允许输入名称而不允许输入数字

html - Bootstrap 等高两列布局

javascript - 如何在不重新加载或重定向页面的情况下使用 html 中的 php 将文本框的值保存到 .txt 文件?

reactjs - axios POST 请求不起作用

javascript - 如何创建可拖动的菜单 div(桌面和移动设备)

javascript - Cordova - 原生日历集成

javascript - 是否可以拉伸(stretch) Canvas 来填充尺寸为显示:flex?的div

javascript - 如果没有观察到状态,虚拟 DOM 实现与 createDocumentFragment() 有何不同?