header 上不需要的转换延迟

Unwanted transition delay on header

我有一个奇怪的转换延迟。当用户向下滚动屏幕 70 像素或更多时,导航栏从“顶部:-100%;”滑入。到“顶部:0;”但它的延迟为 1 秒。不知道怎么删...

为了捕捉我使用的导航栏 document.getElementById。

这是我的 html:

<header id="header">
<div class="header-container">
    <div class="header-downbar">
        <div class="header-downbar-content">    
            <div class="header-logo">
                <div class="header-logo-container"> 
                    <a href="index.php"><img src="grafika/Fenix-logo-white.png" alt=""></a>
                </div>
            </div>
            <div class="header-navbar">
                <nav>
                    <ul>
                        <a href=""><li><p class="link">XXXX</p></li></a>
                        <a href=""><li><p class="link">XXXX</p></li></a>
                        <a href=""><li><p class="link">XXXX</p></li></a>
                        <a href=""><li><p class="link">XXXX</p></li></a>
                    </ul>
                </nav>
            </div>
        </div>
    </div>
</div>
</header>

这是我的 CSS header:

<style>
 header {
 z-index: 3;
 width: 100%;
 position: fixed;
 top: -100%;
 transition-delay: 0s;
 transition: 0.6s;
 }
</style>

这是我的 JS:

<script type="text/javascript">

const header = document.getElementById("header");

window.onscroll = function() {
    slideInHeader();
}

function slideInHeader() {
    if(document.body.scrollTop > 70 || document.documentElement.scrollTop > 70) {
        header.style.top = "0";
    }
    else {
        header.style.top = "-100%";
    }
}

</script>

我没有看到任何延迟,但是 100% 表示总滚动高度的 100%,这将导致动画速度不一致,具体取决于页面内容的大小。

此方法使用菜单高度本身来隐藏它:

const header = document.getElementById("header"),
      _top = -header.getBoundingClientRect().height + "px";

header.style.top = _top;
window.onscroll = function() {
  slideInHeader();
}

function slideInHeader() {
  if (document.body.scrollTop > 70 || document.documentElement.scrollTop > 70) {
    header.style.top = "0";
  } else {
    header.style.top = _top;
  }
}
html,
body {
  height: 300%;
}

header {
  z-index: 3;
  width: 100%;
  position: fixed;
  top: -100%;
  transition-delay: 0s;
  transition: 0.6s;
}
<header id="header">
  <div class="header-container">
    <div class="header-downbar">
      <div class="header-downbar-content">
        <div class="header-logo">
          <div class="header-logo-container">
            <a href="index.php"><img src="grafika/Fenix-logo-white.png" alt=""></a>
          </div>
        </div>
        <div class="header-navbar">
          <nav>
            <ul>
              <a href="">
                <li>
                  <p class="link">XXXX</p>
                </li>
              </a>
              <a href="">
                <li>
                  <p class="link">XXXX</p>
                </li>
              </a>
              <a href="">
                <li>
                  <p class="link">XXXX</p>
                </li>
              </a>
              <a href="">
                <li>
                  <p class="link">XXXX</p>
                </li>
              </a>
            </ul>
          </nav>
        </div>
      </div>
    </div>
  </div>
</header>