css之动画学习(二)

126 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

前言

上一篇大致列了常用的几种动画方式,这一次来学习一下我们常用的一个动画css动画。css动画使元素逐渐从一种样式变为另一种样式。您可以随意更改任意数量的 CSS 属性。

如需使用 CSS 动画,您必须首先为动画指定一些关键帧。关键帧包含元素在特定时间所拥有的样式。要创建 CSS 动画,首先我们需要了解 @keyframes 规则,@keyframes 规则是用来定义动画各个阶段的属性值,类似于 flash 动画中的关键帧。

keyframes

/* 动画代码 */
@keyframes example {
  from {background-color: red;}
  to {background-color: yellow;}
}

	 @keyframes jump {
	            from { bottom: 10rpx; }
	            to { bottom: 2rpx }
	        }

最重要的是我们需要设置动画的名字@keyframes 动画名字,里面有from 属性 to 属性 ,from里面就是可以编写对应的css属性,简单理解 就是从什么属性变到什么属性,来达到一个变化的效果。接下来我们可以在对应的元素样式里面加上这个动画

/* 向此元素应用动画效果 */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}

这是给一个div标签加上动画,animation-name 写我们定义好的动画名字。

animation-duration 意思是这个动画持续多久。

animation-iteration-count:infinite 意思是让这个动画一直反复进行,就是不断循环。

下面列举所有属性的含义

  • animation-name:设置需要绑定到元素的动画名称;
  • animation-duration:设置完成动画所需要花费的时间,单位为秒或毫秒,默认为 0;
  • animation-timing-function:设置动画的速度曲线,默认为 ease;
  • animation-fill-mode:设置当动画不播放时(动画播放完或延迟播放时)的状态;
  • animation-delay:设置动画开始之前的延迟时间,默认为 0;
  • animation-iteration-count:设置动画被播放的次数,默认为 1;
  • animation-direction:设置是否在下一周期逆向播放动画,默认为 normal;
  • animation-play-state:设置动画是正在运行还是暂停,默认是 running;
  • animation:所有动画属性的简写属性。

点击动画

下面看一个手势不断点击的效果,这个手势就是利用css动画实现

QQ20220603-134351-HD.gif

	transition: all 1s;
	animation: jump .2s ease-in-out infinite alternate;

动画就是上面定义的jump动画,在需要的对应标签样式里加上这2个属性,就能做到反复点击的效果。

总结

css动画还是相对简单实用,具体的效果可以结合各种属性,配合我们的业务逻辑来实现,应该也可以满足大部分需求。