jQuery 其他颜色条件需要 17 秒才能响应
jQuery Color else condition takes 17 second to respinse
我已经在我电脑上的每个浏览器上进行了测试。
我什至尝试了错误处理,没有发现任何问题。
该脚本非常简单并且可以正常工作,但不太像预期的那样
当你向下滚动时,颜色条会变成红色,但是当你向上滚动时,它应该会变成绿色(这不是真正的概念,但我试图改变代码并选择随机颜色)
发生的事情是它像预期的那样立即将颜色更改为红色,但是当它再次到达顶部并应该将其更改为绿色时,它需要将近 20 秒才能响应。
这是完整的代码
(function(){
"use strict";
$(document).ready(function(){
var advancedNav = $('.navigation').offset().top;
$(window).scroll(function(){
if( $(window).scrollTop() > advancedNav ) {
$(".navigation").animate({
"background-color": "red"
}, 1000)
}
else {
$(".navigation").animate({
"background-color": "green"
}, 1000)
}
});
});
})();
.navigation {
width: 100%;
position: fixed;
overflow: hidden;
background: rgba(15, 15, 15, 0);
z-index: 1;
}
.navigation ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.navigation li {
float: left;
}
.navigation li a {
display: inline-block;
color: white;
text-align: center;
font-size: 20px;
padding: 14px 16px;
margin-left: 20px;
width: 50px;
text-decoration: none;
font-family: barelFont;
}
.navigation li a:hover {
background-color: #fff;
color: #ddd;
}
<header>
<div class="navigation">
<ul>
<li><a href="#everest">Main</a></li>
<li><a href="#projectsSection">Projects</a></li>
<li><a href="#aboutSection">About</a></li>
<li><a href="#contactSection">Contact</a></li>
</ul>
</div>
</header>
我尝试的是尝试使用原始的 jquery css() 方法,它非常有效。
但我希望它动态变化并且看起来不错,所以我尝试使用 Jquery 颜色和 JqueryUI 并且发生了同样的事情。
这里的问题可能是什么原因造成的?
问题的原因是@Taplar 指出的动画队列中添加了太多动画。
我建议改为 CSS 类:
(function(){
"use strict";
$(document).ready(function(){
var advancedNav = $('.navigation').offset().top;
$(window).scroll(function(){
if( $(window).scrollTop() > advancedNav ) {
$(".navigation").removeClass('green').addClass("red")
}
else {
$(".navigation").removeClass('red').addClass("green")
}
});
});
})();
body, html {height:100%}
header {height:200%}
.navigation {
width: 100%;
position: fixed;
overflow: hidden;
background-color: rgba(15, 15, 15, 0);
z-index: 1;
transition:background-color 1s
}
.green {background-color: green}
.red {background-color: red}
.navigation ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.navigation li {
float: left;
}
.navigation li a {
display: inline-block;
color: white;
text-align: center;
font-size: 20px;
padding: 14px 16px;
margin-left: 20px;
width: 50px;
text-decoration: none;
font-family: barelFont;
}
.navigation li a:hover {
background-color: #fff;
color: #ddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
<div class="navigation">
<ul>
<li><a href="#everest">Main</a></li>
<li><a href="#projectsSection">Projects</a></li>
<li><a href="#aboutSection">About</a></li>
<li><a href="#contactSection">Contact</a></li>
</ul>
</div>
</header>
我已经在我电脑上的每个浏览器上进行了测试。 我什至尝试了错误处理,没有发现任何问题。
该脚本非常简单并且可以正常工作,但不太像预期的那样
当你向下滚动时,颜色条会变成红色,但是当你向上滚动时,它应该会变成绿色(这不是真正的概念,但我试图改变代码并选择随机颜色)
发生的事情是它像预期的那样立即将颜色更改为红色,但是当它再次到达顶部并应该将其更改为绿色时,它需要将近 20 秒才能响应。
这是完整的代码
(function(){
"use strict";
$(document).ready(function(){
var advancedNav = $('.navigation').offset().top;
$(window).scroll(function(){
if( $(window).scrollTop() > advancedNav ) {
$(".navigation").animate({
"background-color": "red"
}, 1000)
}
else {
$(".navigation").animate({
"background-color": "green"
}, 1000)
}
});
});
})();
.navigation {
width: 100%;
position: fixed;
overflow: hidden;
background: rgba(15, 15, 15, 0);
z-index: 1;
}
.navigation ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.navigation li {
float: left;
}
.navigation li a {
display: inline-block;
color: white;
text-align: center;
font-size: 20px;
padding: 14px 16px;
margin-left: 20px;
width: 50px;
text-decoration: none;
font-family: barelFont;
}
.navigation li a:hover {
background-color: #fff;
color: #ddd;
}
<header>
<div class="navigation">
<ul>
<li><a href="#everest">Main</a></li>
<li><a href="#projectsSection">Projects</a></li>
<li><a href="#aboutSection">About</a></li>
<li><a href="#contactSection">Contact</a></li>
</ul>
</div>
</header>
我尝试的是尝试使用原始的 jquery css() 方法,它非常有效。
但我希望它动态变化并且看起来不错,所以我尝试使用 Jquery 颜色和 JqueryUI 并且发生了同样的事情。
这里的问题可能是什么原因造成的?
问题的原因是@Taplar 指出的动画队列中添加了太多动画。
我建议改为 CSS 类:
(function(){
"use strict";
$(document).ready(function(){
var advancedNav = $('.navigation').offset().top;
$(window).scroll(function(){
if( $(window).scrollTop() > advancedNav ) {
$(".navigation").removeClass('green').addClass("red")
}
else {
$(".navigation").removeClass('red').addClass("green")
}
});
});
})();
body, html {height:100%}
header {height:200%}
.navigation {
width: 100%;
position: fixed;
overflow: hidden;
background-color: rgba(15, 15, 15, 0);
z-index: 1;
transition:background-color 1s
}
.green {background-color: green}
.red {background-color: red}
.navigation ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.navigation li {
float: left;
}
.navigation li a {
display: inline-block;
color: white;
text-align: center;
font-size: 20px;
padding: 14px 16px;
margin-left: 20px;
width: 50px;
text-decoration: none;
font-family: barelFont;
}
.navigation li a:hover {
background-color: #fff;
color: #ddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
<div class="navigation">
<ul>
<li><a href="#everest">Main</a></li>
<li><a href="#projectsSection">Projects</a></li>
<li><a href="#aboutSection">About</a></li>
<li><a href="#contactSection">Contact</a></li>
</ul>
</div>
</header>