gpt4 book ai didi

javascript - 淡入/淡出导航栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:30:14 24 4
gpt4 key购买 nike

我正在尝试将我的导航栏设置为保持固定并在我向下滚动时淡入 0.8 不透明度,并在我向上滚动时返回到他的正常位置和不透明度。

我的 jquery 代码是:

jQuery(document).ready(function(){

var navOffset = jQuery("nav").offset().top;

jQuery(window).scroll(function(){

var scrollPos = jQuery(window).scrollTop();

if(scrollPos > navOffset) {
jQuery("nav").addClass("fixed");
jQuery("nav").fadeTo(1500,0.5);
} else {
jQuery("nav").removeClass("fixed");
jQuery("nav").fadeTo(1500,1);

}
});
});

我的 CSS 代码是:

.fixed {

position:fixed;

top:0;
}

当我向下滚动时它会淡出,但当我向上滚动时它不会恢复到原来的不透明度。我是 jQuery 的新手。

最佳答案

我认为问题在于您在每次触发 scroll 事件时都设置了 fadeTo 函数。因此,当您向下滚动时,您将向动画效果队列添加许多“淡出”调用。当您向上滚动时,所有“淡出”效果(每个效果需要 1.5 秒)必须在第一个“淡入”调用发生之前完成。

您可以通过添加对 jQuery 的 .stop(true) 的调用来解决此问题,这样每个滚动事件都会清除动画队列:

jQuery(document).ready(function() {

var navOffset = jQuery("nav").offset().top;

jQuery(window).scroll(function() {

var scrollPos = jQuery(window).scrollTop();
jQuery("nav").stop(true);

if (scrollPos > navOffset) {
jQuery("nav").addClass("fixed");
jQuery("nav").fadeTo(1500, 0.5);

} else {
jQuery("nav").removeClass("fixed");
jQuery("nav").fadeTo(1500, 1.0);
}
});
});
body {
height: 4096px;
padding-top: 32px;
}
nav {
height: 128px;
width: 100%;
border: 1px solid black;
background-color: #00aa00;
}
.fixed {
position: fixed;
top: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
<title>so</title>
<meta charset="UTF-8">

</head>

<body>

<nav></nav>

</body>

</html>

请注意,这意味着在用户停止滚动之前,fadeTo 动画不会发生。

关于javascript - 淡入/淡出导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com