如何在没有闪光灯的情况下最初隐藏 div?

How to initially hide a div without a flash?

我有一个向上/向下滑动 div。 Because you cannot 只用 CSS 让它滑出视野,我使用 JavaScript 像这样:

showHideElement = (element, open) => {
  if (open) {
    element.style['margin-top'] = 0;
  } else {
    element.style['margin-top'] = -element.scrollHeight + "px";
  }
}

然后我有一个按钮,用户可以单击该按钮来切换 div 进入或退出视图。这一切都很好。

问题是我希望能够保存用户的首选项,这样如果他们将 div 切换到视图之外,下次他们刷新页面时它就已经切换到视图之外了。这是使用 localstorage 完成的。

我遇到的问题是,为了确定 margin-top,必须首先呈现该元素,以便可以找到它的 scrollHeight。这会导致 "flash" 当用户刷新页面时,他们会看到 div 暂时滑出视图。

我想要一个解决方案,当用户加载页面时 div 已经不在视图中,但是如何在不首先渲染它来确定 scrollHeight 的情况下确定它,以便它的 margin-top 可以设置?

尝试将其设置为 display:nonevisibility: hidden

需要计算元素高度,可以通过渲染元素实现。

您可以尝试 visibility: hiddenposition: absolute。 它不会创建一个白色矩形。

渲染完成时。您可以重置位置,例如 position: unset(或默认值)。