javascript - CSS 动画填充模式 - 我做错了什么?

标签 javascript jquery css css-animations

我需要创建一个旋转动画。单击事件将元素旋转 180° 以指向下方。另一个单击事件将同一元素旋转回 0° 以指向上方。

我将 animation-fill-mode 设置为 forwards 以保留最后一个关键帧状态。但它似乎不起作用。所有视觉元素都重置为默认状态。

任何想法我可能做错了什么?

我的代码笔 : http://codepen.io/simspace-dev/pen/RrpGmP

我的代码 :

(function() {
  $('#btnb').on('click', function(e) {
    return $('.box').addClass('spin-counter-clockwise');
  });
  $('#btnf').on('click', function(e) {
    return $('.box').addClass('spin-clockwise');
  });
  $('.box').on('webkitAnimationEnd', function(e) {
    return $(e.target).removeClass('spin-counter-clockwise').removeClass('spin-clockwise');
  });
}.call(this));
.box {
  background: red;
  position: relative;
  width: 176px;
  height: 176px;
  margin: 40px auto;
  text-align: center;
}
.box .top {
  background: green;
  position: absolute;
  top: 0;
  width: 100%;
  height: 28px;
}
.box .bottom {
  background: purple;
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 28px;
}
.box .caret {
  color: white;
  font-size: 88px;
  position: absolute;
  top: 42px;
  left: 50px;
}
.spin-clockwise {
  -moz-animation: spin 2s;
  -webkit-animation: spin 2s;
  -moz-animation-fill-mode: forwards;
  -webkit-animation-fill-mode: forwards;
}
.spin-counter-clockwise {
  -moz-animation: spin 2s reverse;
  -webkit-animation: spin 2s reverse;
  -moz-animation-fill-mode: forwards;
  -webkit-animation-fill-mode: forwards;
}
@keyframes spin {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
  }
}
body {
  text-align: center;
  margin: 0 auto;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Keyframes are not supported in IE9 and earlier</h2>

<div class="box">
  <div class="top">top</div>
  <div class="caret"><i class="fa fa-caret-square-o-up"></i>
  </div>
  <div class="bottom">bottom</div>
</div>

<p>
  <button id="btnf">SPIN CLOCKWISE</button>
</p>
<p>
  <button id="btnb">SPIN COUTNER CLOCKWISE</button>
</p>

最佳答案

所以根本问题是带有动画的类被删除了。

我无法使用相同的关键帧使其工作,但我所做的是为逆时针创建一个新的关键帧,然后在单击按钮时删除相反的类

变化:

css

.spin-clockwise {


-moz-animation: spin 2s;
  -webkit-animation: spin 2s;

}

.spin-fill-mode {
  -moz-animation-fill-mode: forwards;
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
}

.spin-counter-clockwise {
  -moz-animation: spin-counter 2s; 
  -webkit-animation: spin-counter 2s; 

}

@keyframes spin {
  from {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
  }
}

@keyframes spin-counter {
  from {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
  }
  to {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

js:
$('#btnb').on('click', (e)->


$('.box')
    .addClass('spin-counter-clockwise')
    .removeClass('spin-clockwise')
)

$('#btnf').on('click', (e) ->
  $('.box')
    .addClass('spin-clockwise')
    .removeClass('spin-counter-clockwise')
)

并将类 spin-fill-mode 添加到 box。虽然你可能只是在动画类中保留填充模式......
更新代码笔:

http://codepen.io/anon/pen/QypvOr

关于javascript - CSS 动画填充模式 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623022/

相关文章:

javascript - 从 div 元素获取文件值

javascript - 如何在angularjs重复指令中获取json数据?

javascript - .click(function) 与 jQuery 的基础知识?

javascript - 如何在单击时将 html 颜色输入值设置为 div 颜色

jquery - 无法弄清楚页面的水平滚动

javascript - 验证具有最小和最大范围的输入类型编号

javascript - 如何在单击 html 链接时在弹出窗口中打开不同的内容

css - 如何将 'box-sizing: border-box' 添加到 Normalize.css 文件?

html - bootstrap 行伪元素的使用

javascript - ModelClientValidationRule ValidationType 字符串的有效值?