javascript - 删除类后 CSS 转换不起作用

标签 javascript jquery html css

将一些 CSS 应用到此组件时:

<div id="cart-circle">
      <div id="cart-content">
          <div id="cart-icon" class="text-bordered fa fa-shopping-cart"></div>
          <div id="cart-title" class="text-bordered animated bounceOutRight"></div>
      </div>
 </div>

从 div 中删除类 open-cart-circle 后问题就出现了(带有 cart-circle 类),这是在用户单击圆圈时添加的本身。 open-cart-circle 调整了 heightwidthborder-bottom-left-radius 属性,由动画:

@keyframes trigger-cart-circle {
  100% {
    height: 95px;
    width: 495px;
    border-bottom-left-radius: 26%; }
}

这就是 open-cart-circle 的样子:

.open-cart-circle {
  animation-delay: 0s;
  animation-duration: 0.8s;
  animation-name: trigger-cart-circle;
  animation-fill-mode: both; 
}

因此,当添加 open-cart-circle 时,动画开始,我希望您注意到 animation-fill-mode 是故意放在代码中的,因为我想要“圆圈”在打开和关闭侧边栏时平稳移动(过渡 0.5 秒)。因为关闭侧边栏两次后,CSS 过渡似乎不起作用。为什么?我刚刚陷入困境...

这里 cart-circle 必须有 transition:all 因为这个“圆”在关闭时应该“柔和地”恢复到原来的形状:

#cart-circle {
  position: fixed;
  z-index: 999;
  box-shadow: 0 8px 11px rgba(0, 0, 0, 0.247);
  top: 0;
  right: 0;
  text-align: right;
  border-bottom-left-radius: 100%;
  border: 0.051px solid #333;
  background-color: #f1c40f;
  cursor: pointer;
  transition: all 0.5s;   /*HERE*/
}

编辑

will-change 属性在这里对可能的解决方案有任何意义吗?

最佳答案

如您所见,transition 不适用于animation

因此解决方案很简单,将您的 trigger-* 动画重命名为 trigger-open-* 并创建相应的 trigger-close-* 动画。

然后每次添加open-*类时,移除close-*类。 每次删除 open-* 类时,添加 close-* 类。

这是你的 jsfiddle 修复。 https://jsfiddle.net/pu5y8quz/

关于javascript - 删除类后 CSS 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732887/

相关文章:

javascript - CkEditor 中的 "After paste"事件

javascript - 在jquery中加载作为参数传递的html文件?

javascript - 滚动时编辑 Div(就像在谷歌文档中一样)

jquery - 如何在 html5、jquery、javascript 中获取图像字节字符串(base64)?

javascript - 将丹麦数字转换为英语?

javascript - Mongodb 中聚合的更新

javascript - 如何在 PHP 中创建 AJAX 响应到 session 中?

jquery - 向下滑动一个带有 anchor 的 div,然后点击链接

javascript - 通过 javascript/jquery 检测网站更改

javascript - 如何检测字符是用英语还是越南语或缅甸语写的