CSS3——动画

本文介绍了CSS3中的transition和@keyframes两种技术,用于创建平滑的交互动画。transition提供属性渐变效果,如宽度和高度变化的平滑过渡,可通过设置时间、速度曲线和延迟来定制。@keyframes则允许定义动画的各个阶段,通过百分比或from/to指定样式变化,配合animation属性实现动画播放。文章还提到了浏览器兼容性和自定义控制动画的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用transition制作交互动画

在CSS中transition表示属性渐进变化的效果。

例如:

$(element).css('width','10px');

使用以上的jQuery代码可以改变元素的宽度,但是这样的改变会感到很突兀,在某些场景下,可能需要的是平滑渐进的动画效果。在CSS3出现之前,可以使用JavaScript来实现,在CSS3出现之后,可以应用transition属性制作动画中的过渡效果,transition相比于JavaScript实现更容易,而且可以应用浏览器的硬件加速效果,实现更高的性能。

transition允许CSS的属性值在一定的时间区间内平滑地过渡。
示例:

div {
	transition: height 0.6s;
}

以上代码表示高度如果发生变化,那么在0.6秒内完成平滑地过渡。

如果需要同时改变多个属性,可以使用逗号隔开。
示例:

div {
	transition: width 2s, height 1s;
}

以上的代码表示当宽度和高度同时发生改变时,都会加上过渡动画。

transition可以包含设置渐进动画的函数,相关的函数类型如下所示:

  • ease:(逐渐变慢)默认值,ease函数等同于贝塞尔曲线(0.25,0.1,0.25,1.0)。
  • linear:(匀速),linear函数等同于贝塞尔曲线(0.0,0.0,1.0,1.0)。
  • ease-in:(加速),ease-in函数等同于贝塞尔曲线(0.42,0,1.0,1.0)。
  • ease-out:(减速),ease-out函数等同于贝塞尔曲线(0,0,0.58,1.0)。
  • ease-in-out:(加速然后减速):ease-in-out函数等同于贝塞尔曲线(0.42,0,0.58,1.0)。
  • cubic-bezier:允许开发者自定义一个时间曲线。

transition还可以设置动画的延迟时间,表示延迟多少秒后执行动画,一个添加了所有属性的transition定义如下:

transition: all 0.5s ease-in-out 1s;

其中all表示任意属性的变化都应用过渡动画效果。
以上示例的4个参数依次表示:属性、过渡时间、过渡函数、延迟时间。

二、使用@keyframes制作动画

1、@keyframes的基本语法:

示例:

@keyframes spin{
  from {
      transform: rotate(0);
  }
  to {
      transform: rotate(360deg);
  }
}
@keyframes spin {
  0% {
      transform: rotate(0);
  }
  50% {
      transform: rotate(180deg);
  }
  100% {
      transform: rotate(360deg);
  }
}

@keyframes声明后紧跟动画的名称,花括号内部就是一些不同时间段的样式规则。@keyframes必须配合元素中定义的animation属性,它用于定义动画,语法规则为:

animation: spin 8s infinite linear;

第1个参数是动画名称,第2个参数是动画执行一次的时间,第3个参数是动画循环的次数,如果使用infinite表示无限循环,第4个参数是动画的速度函数,和transition中的速度函数一致。

此外还可以设置动画开始前的延迟时间、动画是否轮流反向播放等。
示例:

animation: name 8s linear 2s infinite alternate;

alternate表示动画正向循环完成后再反向循环。

当要控制动画的执行和暂停时,可以为元素添加animation-play-state属性。
animation-play-state参数中,paused用于暂停动画,running用于开启动动画。
示例:

animation-play-state: paused;

2、@keyframes总结

  • 动画是使元素从一种样式逐渐变化为另一种样式。
  • keyframs可以改变任意多的样式、任意多的次数。
  • 使用百分比来规定变化发生的时间,或用关键词from和to,等同于0%和100%。
  • 0%是动画的开始,100%是动画的完成。
  • 为了得到最佳的浏览器支持,应该始终定义0%和100%选择器。

注意:IE10、Firefox以及Opera支持@keyframes规则和animation属性。Chrome和Safari需要前缀-webkit-。IE9以及更早的IE版本,不支持@keyframes规则或animation属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值