可以试试移除动画的类再重新给节点添加动画的类
下面这个demo是执行一次动画,2s后再重新执行一遍
(因为是demo,我就没有考虑兼容性问题,没有添加css前缀)
<div class="dot anm" id="anm"></div> .dot {position: relative
width: 100px
height: 100px
margin: 100px
border-radius: 50%
background: #000
}
.anm {
animation: move 1s forwards
}
@keyframes move
{
from {
left:0px
}
to {
left:200px
}
} setTimeout(function() {
var dom = document.getElementById('anm')
dom.className = 'dot'
setTimeout(function() {
dom.className = 'dot anm'
}, 10)
}, 2000)
(文章来源于:玉溪无痛人流因为各种浏览器的算法不一样,从而导致CSS在不同的浏览器中存在一部分不一样的效果,CSS重置就是写一段初始化CSS将这些浏览器不同的初始化设置指定同一种显示效果。使用了CSS重置以后,各不同浏览器的初始化设置将一致,后面再写CSS的时候就不会因为浏览器的初始化不同从而导致显示的效果不一致了。CSS重置使用的误区下面这段代码是网上很多网站CSS开始之前使用的CSS重置代码,看着就让人头晕,可能连网站设计者自己都搞不懂里面很多标签的含义。html, body, div, span, applet, object, iframe, h1, h2, h3, h4,h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite,code, del, dfn, em, img,ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt,dd, ol, ul, li, fieldset, form, label, legend, table,caption,tbody, tfoot, thead, tr, th, td, article,aside, canvas, details, embed, figure, figcaption, footer, header,hgroup, menu, nav, output, ruby,section,summary,time, mark, audio, video {margin: 0padding: 0border: 0font-size: 100%font: inheritvertical-align: baseline}我们写CSS重置要考虑到自己的网站的具体设计,如上面那段CSS代码所示,你的网站可能只有用到里面的其中一小部分标签,但是你却把所有的全部复制到你的CSS里面,你考虑过CSS渲染的问题吗?对你没用的东西你为什么要写进去呢?写程序是一件很严谨的事情,你写的每一段代码你至少需要知道其含义是什么,原样复制连自己都弄不清楚是什么意思有想到会造成什么后果吗?保留住动画的最后状态2113,在animation后面加上forwards就可5261以了代码如下:4102
-webkit-animation{animations 1s ease 1 forwards}
注意:动画如果只执行一次,1653通过css无法办到,可以把动画结束时的样式写入一个class中,用js在动画结束时把class赋给这个对象。
扩展资料
CSS animation 与 CSS transition 有何区别
一、指代不同
1、animation :属性是一个简写属性,用于设置六个动画属性。
2、transition:属性是一个简写属性,用于设置四个过渡属性。
二、特点不同
1、animation :animation: name duration timing-function delay iteration-count direction,规定需要绑定到选择器的 keyframe 名称。规定完成动画所花费的时间,以秒或毫秒计。
2、transition:transition: property duration timing-function delay,规定设置过渡效果的 CSS 属性的名称。规定完成过渡效果需要多少秒或毫秒。