我想逐个淡化每个导航li
。这是我目前的代码。它显示了整个div,现在我希望逐渐淡入每个li
稍微延迟。
$(document).ready(function(){
$("#circleMenuBtn").click(function(){
$("#dropDownMenu").fadeIn(500);
});
});
<div class="sub-menu" id="dropDownMenu">
<ul id="navbar">
<li> First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
<li>Fifth</li>
</ul>
</div>
.sub-menu {
position: absolute;
z-index: 1000;
color: #fff;
right: 5px;
display: none;
}
我尝试循环尝试在一次迭代中淡入每个li
但没有成功。请分享您的想法。
更新:Rory McCrossan的代码非常完美。不幸的是,它与我在外面点击时隐藏菜单的代码不兼容。
$(document).mouseup(function (e) {
var container = $("#dropDownMenu");
if (!container.is(e.target)
&& container.has(e.target).length === 0) {
container.fadeOut(500);
}
});
出了什么问题?我刚开始学习JS和JQuery所以如果这是一个蹩脚的问题,请原谅我。
答案 0 :(得分:39)
您可以使用def local2utc(self, dt):
from_zone = tz.gettz('America/Los_Angeles')
to_zone = tz.gettz('UTC')
local = dt.replace(tzinfo=from_zone)
print("converted time")
print(local.astimezone(to_zone).replace(tzinfo = None))
return local.astimezone(to_zone).replace(tzinfo = None)
调用循环浏览each()
元素和li
delay()
动画增量。试试这个:
fadeIn()
$("#dropDownMenu li").each(function(i) {
$(this).delay(100 * i).fadeIn(500);
});
.sub-menu {
position: absolute;
z-index: 1000;
/* color: #fff;
right: 5px; */
}
.sub-menu li {
display: none;
}
如果要增加/减少项目淡入之间的间隔,请更改提供给<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sub-menu" id="dropDownMenu">
<ul id="navbar">
<li> First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
<li>Fifth</li>
</ul>
</div>
方法的值。在此示例中,我使用了delay()
。
答案 1 :(得分:15)
如果你的元素数量有限,你也可以考虑使用css-animations而不是javascript解决方案。 您可以使用nth-child选择器处理每个元素,并根据其位置延迟其动画。要使动画最后停止,请使用animation-fill-mode属性。
li {
opacity: 0;
animation: fadeIn 0.9s 1;
animation-fill-mode: forwards;
}
li:nth-child(5n+1) {
animation-delay: 0.5s;
}
/*...*/
@keyframes fadeIn {
0% {
opacity: 0.0;
}
100% {
opacity: 1.0;
}
}
请参阅此示例并注意前缀 https://jsfiddle.net/97bknLdu/
答案 2 :(得分:10)
$(document).ready(function() {
function fade(ele) {
ele.fadeIn(500, function() { // set fade animation fothe emlement
var nxt = ele.next(); // get sibling next to current eleemnt
if (nxt.length) // if element exist
fade(nxt); // call the function for the next element
});
}
$("#circleMenuBtn").click(function() {
fade($('#navbar li').eq(0)); // call the function with first element
});
});
&#13;
.sub-menu {
left: 0;
top: 0;
position: relative;
z-index: 1000;
color: #000;
right: 5px;
}
ul li {
display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="sub-menu" id="dropDownMenu">
<ul id="navbar">
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
<li>Fifth</li>
</ul>
</div>
<button id="circleMenuBtn">click</button>
&#13;