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>
我有一个奇怪的转换延迟。当用户向下滚动屏幕 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>