逐一淡入每一个李

时间:2016-05-09 07:22:04

标签: javascript jquery html css

我想逐个淡化每个导航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所以如果这是一个蹩脚的问题,请原谅我。

3 个答案:

答案 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)

使用animation success callback

执行此类操作

&#13;
&#13;
$(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;
&#13;
&#13;