浅谈CSS动画
本文简单介绍如何定义 css 动画
transition
transitions 可以决定哪些属性发生动画效果transition-property
(明确地列出这些属性,如果省略则包含所有属性),何时开始transition-delay
(设置 delay),持续多久transition-duration
(设置 duration) 以及如何动画transition-timing-function
(定义timing function,比如匀速地或先快后慢)
如下面指定字体大小颜色和字体发生动画效果
.transition-box{ font-size: 1rem; color: red; transition: color 2s, font-size
2s; }
transition 的发生需要属性被修改时才会触发,比如 hover 时我们修改字体大小和颜色,如果没有定义 transition 这些属性会立即修改,
.transition-box:hover {
font-size: 2rem;
color: green;
}
CSS 过渡 由简写属性transition
定义是最好的方式,可以避免属性值列表长度不一,节省调试时间。
也可以用下面子属性来控制过渡的各部分
transition-property: color, font-size;
transition-duration: 4s;
transition-timing-function: ease;
transition-delay: 0s;
transition 的特点
只能在 css 属性变化时被动触发
transition 是一次性的,不能重复发生,除非一再触发
transition 只能定义开始状态和结束状态,不能定义中间状态
animation
animation 属性用来指定一组或多组动画,每组之间用逗号相隔,是 animation-name
,animation-duration
, animation-timing-function
,animation-delay
,animation-iteration-count
,animation-direction
,animation-fill-mode
和 animation-play-state
属性的一个简写属性形式。
首先我们需要先定义一个关键帧keyframes
, @keyframes
at-rule 规则通过在动画序列中定义关键帧(或 waypoints)的样式来控制 CSS 动画序列中的中间步骤。和 转换 transition 相比,关键帧 keyframes 可以控制动画序列的中间步骤。
下面定义了一个开始时正常大小,中间时放大 1.5 倍,结束时回复正常大小
@keyframes scale {
0% {
transform: scale(1);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
下面我们定义了一个 button,在animation
中指定 scale,动画世界 0.8 秒,infinite 表示动画播放的次数无限次
.animation-btn{
background-color: #ff2b99;
border: 0px solid gray;
color: #fff;
animation: scale .8s infinite;
border-radius: 4px;
width: 160px;
height: 40px;
font-size: 12px;
}