CSS动画、状态变化完成动画

标签 css ajax animation

我们正在开发的网站上实现愿望 list 功能,当用户单击图标将当前元素添加到愿望 list 时,它会触发 ajax 请求。

现在,当 ajax 请求执行其任务时,我们向图标添加一个加载类,因此它会稍微放大或缩小。我的问题是,一旦 ajax 请求完成加载,我们就会删除该类,但动画突然停止,而不是缩小到其初始大小。

我们怎样才能让动画结束,而不是突然停止?

下面是我的 CSS:

/**
 * Keyframes
 */
@keyframes breathe {

    50% {
        transform: scale(1.2);
    }

    100% {
        transform: scale(1);
    }
}



/**
 * Icon
 */
.wishlist-icn {
    transition: all .3s ease;
}

    .wishlist-icn--isAdded {
        fill: #4B3814;
    }

    .wishlist-icn--isLoading {
        animation: breathe 2s ease-in-out 0s infinite normal both;
    }

最佳答案

tl;dr:尝试申请 animation-fill-mode: forwards

CSS 动画完成后的正常行为是将样式重置为初始状态。我在这里看到的过程是,当您删除 --isLoading 类时,动画会停止并将样式恢复到原始状态。只有在那之后,过渡才开始工作,并且由于样式已经重置而没有任何作用。 .wishlist-icn 中的 animation-fill-mode:forwards 会阻止动画重置,从而使过渡能够逐渐进行。确保您可以将 transform:scale(1) 添加到 .wishlist-icn:not(.wishlist-icn--isLoading) 以便过渡知道要走向何方。并不是说我在这种特殊情况下测试过它,但值得尝试;P

关于CSS动画、状态变化完成动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289775/

相关文章:

html - IE CSS float 问题

php - JSON 到 HTML 表

javascript - xhr.onload 和 xhr.onprogress 有什么区别

javascript - 获取动态创建的元素的id

javascript - JQuery BorderRadius 在 mouseout 中不执行动画

Android setBackgroundResource 释放内存?

javascript - 如何使用 github 托管外部 CSS 文件?

css - 为什么我的搜索框在 IE 和 Chrome 中的位置不同?

swift - UITableViewRowAction 动画完成后

javascript - 无法从 CSS Create React App 中的公用文件夹导入