前端学习-Css3动画入门

本文介绍了Css3动画的基础,包括@keyframes规则的使用,以及如何通过百分比定义动画的不同状态。同时强调了浏览器兼容性问题,特别是针对IE10之前的版本,需要添加特定的前缀如-webkit-、-moz-、-o-和-ms-。文章还给出了一个简单的动画实例,并展示了如何处理兼容性问题以确保在不同浏览器中正常工作。

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

前端学习之Css3动画

Css3动画

在Css3中,用 @keyframes 规则来定义动画的。
浏览器兼容情况
可以看到,在IE10以前的版本是不兼容Css3动画的,而且特定的浏览器需要使用特定的前缀来让浏览器支持动画效果。所以使用Css3动画需要考虑一下浏览器兼容的问题。
下面是一个动画定义的例子。

@keyframes circle {
	0%{
		transform: rotate(0deg);
	}
	100%{
		transform: rotate(360deg);
	}
}

以上使用的都是w3c标准语法。
在这个例子中,首先通过 @keyframes 准则来定义一个名为 circle 的动画。在定义的内容中,有两种方式,一种就像这个例子中的写法,通过百分比来定义动画的某个状态下的css属性。譬如,上面这个例子的0%中的内容,表示这个动画的开始状态下的css属性是这个元素静止状态下转动0°的样子(也就是不转),100%表示一个动画过程结束时的css属性是这个元素静止状态下转动360°的样子。所以这个动画全过程便是从静止状态下开始,转动一周,结束停止。而另外一种方式则是使用from和to来表示动画开始与结束时的状态。上面的例子可改写为:

@keyframes circle {
	from{
		transform: rotate(0deg);
	}
	to{
		transform: rotate(360deg);
	}
}

使用第一种方式来定义动画是更加推荐的写法,因为很多时候动画并不是只有一个开始和结束过程就能完事了的,还需要定义中间状态。这个时候,可以通过25%,50%,75%等等百分比数值来代表中间状态的css属性值来实现更加复杂的动画效果。
定义好动画的内容以后便可以在需要动画效果的元素中来使用这个动画效果。

<div class="circle"></div>
.circle{
	border: 2px solid white;
	border-radius: 100%;
	width: 25px;
	height: 25px;
	border-top-color: transparent;
	animation: circle infinite 0.75s linear;
}

在这里,通过 animation 属性来给这个元素添加动画效果。
在这里,第一个属性是 @keyframes 所定义的动画名称(animation-name)。第二个属性是动画播放的次数(animation-iteration-count),这里设置为infinite意思是无限循环播放。第三个属性是动画完成所需要的时长(animation-duration),这个属性一定要设置,不然时长默认为0,就不会播放动画。第四个属性是动画的速度曲线(animation-timing-function),这里设置为linear表示属性是线性变化的。
通过这个设置就实现了一个动画,效果图如下。。。
原理其实就是设置了一个3/4个圆环,然后让它转起来。这个其实是用来做loader的。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
由于浏览器兼容的问题,@keyframes 规则,transform 属性 ,animation属性,都需要做浏览器兼容处理。
这里介绍一下常见的处理浏览器兼容问题所添加的属性前缀。
safari 和 Chrome浏览器的低版本需要使用 -webkit-前缀属性
低版本Firefox浏览器使用 -moz- 前缀属性。
低版本Opera浏览器使用 -o- 前缀属性。
低版本IE浏览器使用 -ms-前缀属性。
对于IE浏览器而言,只有IE10才支持动画,但是IE10支持的是w3c标准属性的动画,因此不需要设置前缀,而对于Transform属性来说,IE9就支持前缀属性,如果通过transform来设置静态的css属性,又要兼容IE9的话,就要加上 -ms- 前缀。
以下是transform属性的浏览器版本兼容信息:
在这里插入图片描述
为了兼容多种浏览器,上述的例子就应该做如下的更改。

.circle{
	 border: 2px solid white;
	 border-radius: 100%;
	 width: 25px;
	 height: 25px;
	 border-top-color: transparent;
	 -moz-animation: circle infinite 0.75s linear;
	 -webkit-animation: circle infinite 0.75s linear;
	 -o-animation: circle infinite 0.75s linear;
	 animation: circle infinite 0.75s linear;
 }
 @-moz-keyframes circle{
	0%{
		-moz-transform: rotate(0deg);
	}
	100%{
		-moz-transform: rotate(360deg);
	}
}
@-webkit-keyframes circle{
	0%{
		-webkit-transform: rotate(0deg);
	}
	100%{
		-webkit-transform: rotate(360deg);
	}
}
@-o-keyframes circle{
	0%{
		-o-transform: rotate(0deg);
	}
	100%{
		-o-transform: rotate(360deg);
	}
}
@keyframes circle {
	0%{
		transform: rotate(0deg);
	}
	100%{
		transform: rotate(360deg);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值