【问题标题】:How to trigger css animation w/ delay on click using javascript/jquery?如何使用javascript/jquery触发带有点击延迟的css动画?
【发布时间】:2017-05-23 10:50:40
【问题描述】:

所以我有一个问题。我正在尝试通过 Javascript/JQuery 启动 CSS 动画。动画是我的导航菜单。它由 4 个链接组成,每个链接都放置在一个宽度设置为零的 div 中。动画使宽度为父宽度的 100%,延迟 +100 毫秒,从顶部元素到底部的 300 开始,因此看起来好像所有元素都单独出现以形成菜单。还有一种在点击时反转动画的方法也很棒。我尝试使用 toggle() 但不成功。

<div class="navbar">
    <a href="index.php"><div id="nav1">Home</div></a>
    <a href="about.php"><div id="nav2">About</div></a>
    <a href="work.php"><div id="nav3">Work</div></a>
    <a href="contact.php"><div id="nav4">Msg</div></a>
</div>

这里是javascript代码

function expand() {
    var navName = '#nav';
    var delay = 0;
    for(i = 1; i < 5; i++){
    //Resets nav value
    navName = '#nav';
    delay = 200
    //Adds number to class name
    navName += i;
    delay += 100;
    //alert(navName + delay);
    $(navName).css('animation', 'expand ease 500ms forwards'); 
    $(navName).css('animation-delay', delay +'ms');

}

【问题讨论】:

  • 你有什么问题?您可以在问题中包含css 吗? “我尝试使用 toggle() 但不成功。” 您尝试的哪一部分不成功?

标签: javascript jquery html css


【解决方案1】:

您可以通过切换类来应用它,而不是使用 JQuery 应用 animation 属性。此类将包含您已经需要的动画属性。

$('.target').on('click', function() {
  $(this).toggleClass('animate');
});
.target {
  padding: 1em;

  background: cornflowerblue;
}

.animate {
    animation: expand 1s linear;
    animation-delay: 200ms;
}

@keyframes expand {
    0% {
        transform: scale(1);
        opacity: 0;
    }
    60% {
        transform: scale(2);
        opacity: 1;
    }
    100% {
        transform: scale(1.5);
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="target">click me</div>

【讨论】:

  • 非常感谢!我发现你可以在 toggleClass() 函数中设置一个延迟,所以它会产生奇迹!现在只需要为退出动画反转它哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多