Ski*_*erm 5 javascript css jquery
我有一些我正在制作动画的文字,我使用CSS关键帧.我保留了动画最终结果的外观,所以我使用动画填充模式:转发这样做,如下所示:
#my-text {
opacity: 0;
}
.show-me {
animation-name: show-me;
animation-duration: 2s;
animation-fill-mode: forwards
}
@keyframes show-me {
100% {
opacity: 1;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用jQuery将show-me类添加到元素:
$('#my-text').addClass('show-me');
Run Code Online (Sandbox Code Playgroud)
稍后,在动画完成后,我尝试通过代码更改元素的不透明度,但无法执行此操作:
// this won't change the opacity, unfortunately
$('#my-text').css('opacity', 0);
Run Code Online (Sandbox Code Playgroud)
这是一个显示问题的示例:http://jsfiddle.net/x3mbkbwL/2/
使用填充模式转发时,如何覆盖动画中的值集?我知道当我需要更改元素的不透明度时,我可以删除该类(在本例中为"show-me"),但似乎我应该能够直接覆盖JavaScript中的css并且它将覆盖不透明度.
似乎animation-fill-mode: forwards无法在同一元素上覆盖由 设置的 CSS 属性。
一种解决方案是在已设置的元素周围放置一个包装器animation-fill-mode: forwards。然后,为了覆盖转发的属性,您只需更新父级。
<div id="parent">
<div id="my-text">I just faded in!</div>
</div>
Run Code Online (Sandbox Code Playgroud)
opacity然后仅在父级上“覆盖” :
$('#parent').css('opacity', 0);
Run Code Online (Sandbox Code Playgroud)
我在这里对你的小提琴进行了更改:http://jsfiddle.net/x3mbkbwL/3/
如果您愿意,也可以添加另一个子元素:
<div id="my-text">
<span id="wrapper">I just faded in!</span>
</div>
Run Code Online (Sandbox Code Playgroud)
opacity然后仅在嵌套包装器上“覆盖” :
$('#wrapper').css('opacity', 0);
Run Code Online (Sandbox Code Playgroud)
如果转发的不透明度设置为 ,这两种方法效果最佳1。如果它被转发到0那么它显然不会工作,因为该元素已经被隐藏了。