CSS3的动画属性
transition、animation和transform是CSS3中三个制作动画的重要属性,本篇文章主要对其进行学习了解。
一、transition
transition
允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值。
transition :transition-property || transition-duration || transition-timing-function || transition-delay;
transition
主要包含四个属性值:执行变换的属性:transition-property
,变换延续的时间:transition-duration
,在延续时间段,变换的速率变化:transition-timing-function
,变换延迟时间:transition-delay
。
1. transition-property
transition-property: none || all || property;
transition-property
是用来指定当元素其中一个属性改变时执行transition
效果。
none: 没有属性会获得过渡效果;
all: 所有属性都将获得过渡效果,也是其默认值;
property: 定义应用过渡效果的 CSS 属性名称列表,列表以逗号分隔。
2. transition-duration
transition-duration: time;
transition-duration
是用来指定元素 转换过程的持续时间,取值time为数值,单位为s(秒)或者ms(毫秒),其默认值是0,也就是变换时是即时的。
3. transition-timing-function
transition-timing-function: linear || ease || ease-in || ease-out || ease-in-out || cubic-
bezier(n,n,n,n);
以上具体取值含义如下:
值 | 描述 |
---|---|
linear | 规定以相同速度开始至结束的过渡效果。 |
ease | 规定慢速开始,然后变快,然后慢速结束的过渡效果。 |
ease-in | 规定以慢速开始的过渡效果。 |
ease-out | 规定以慢速结束的过渡效果。 |
ease-in-out | 规定以慢速开始和结束的过渡效果。 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。 |
4. transition-delay
transition-delay: time;
transition-delay
是用来指定一个动画开始执行的时间,也就是说当改变元素属性值后多长时间开始执行transition
效果,其取值time为数值,单位为s(秒)或者ms(毫秒), 默认大小是"0",也就是变换立即执行,没有延迟。
5. 示例
html代码
<div class="one"></div>
css代码
.one {
width: 100px;
height: 100px;
margin: 200px auto;
background-color: #cd4a48;
-webkit-transition: width, height 2s ease;
-moz-transition: width, height 2s ease;
-ms-transition: width, height 2s ease;
-o-transition: width, height 2s ease;
transition: width, height 2s ease;
} .one:hover {
width: 300px;
height: 300px;
}
效果:
6. 注意事项
- 不是所有的CSS属性都支持
transition
,完整的列表查看这里,以及具体的效果。 transition
需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition
可以算出中间状态。但是,transition
没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。transition
需要事件触发,所以没法在网页加载时自动发生。transition
是一次性的,不能重复发生,除非一再触发。
二、animation
不同于transition
只能定义首尾两个状态,animation
可以定义任意多的关键帧,因而能实现更复杂的动画效果。
animation: animation-name || animation-duration || animation-timing-function || animation-delay || animation-iteration-count || animation-direction
animation
主要包含六个属性,具体含义如下:
值 | 描述 |
---|---|
animation-name | 规定需要绑定到选择器的 keyframe 名称。。 |
animation-duration | 规定完成动画所花费的时间,以秒或毫秒计。 |
animation-timing-function | 规定动画的速度曲线。 |
animation-delay | 规定在动画开始之前的延迟,默认值为0。 |
animation-iteration-count | 规定动画应该播放的次数,默认值为1。 |
animation-direction | 规定是否应该轮流反向播放动画,默认值是正向。 |
1. keyframe
在介绍animation
具体使用之前,要先介绍keyframe。
@keyframes
让开发者通过指定动画中特定时间点必须展现的关键帧样式(或者说停留点)来控制CSS动画的中间环节。这让开发者能够控制动画中的更多细节而不是全部让浏览器自动处理。
要使用关键帧, 先创建一个带名称的@keyframes
规则,以便后续使用 animation-name
这个属性来调用指定的@keyframes
. 每个@keyframes
规则包含多个关键帧,也就是一段样式块语句,每个关键帧有一个百分比值作为名称,代表在动画进行中,在哪个阶段触发这个帧所包含的样式。
关键帧的编写顺序没有要求,最后只会根据百分比按由小到大的顺序触发。
@keyframes animationname {keyframes-selector {css-styles;}}
具体含义如下:
值 | 描述 |
---|---|
animationname | 必需。定义动画的名称。 |
keyframes-selector | 必需。动画时长的百分比。合法的值:0-100%from(与 0% 相同)to(与 100% 相同) |
css-styles | 必需。一个或多个合法的 CSS 样式属性。 |
示例:
@keyframes identifier {
0% { top:; left: 0px}
50% { top: 30px; left: 20px; }
100% { top:; left: 30px;}
}
2. 示例
html代码
<div class="one"></div>
css代码
.one {
width: 100px;
height: 100px;
margin: 200px auto;
background-color: #cd4a48;
position: relative;
animation: moveHover 5s ease-in-out 0.2s; } @keyframes moveHover {
0% {
top: 0px;
left: 0px;
background: #cd4a48;
}
50% {
top: 200px;
left: 200px;
background:#A48992;
}
100% {
top: 350px;
left:350px;
background: #FFB89A;
}
}
效果:
3. 其他属性
除了上述主要用到的六个属性外,还要额外介绍两个属性。
animation-fill-mode
动画结束以后,会立即从结束状态跳回到起始状态。如果想让动画保持在结束状态,需要使用animation-fill-mode
属性。
animation-fill-mode: none || backwards || both
- none:默认值,回到动画没开始时的状态。
- forwards:当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
- backwards:在
animation-delay
所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。 - both: 根据
animation-direction
轮流应用forwards和backwards规则。
animation-play-state
有时,动画播放过程中,会突然停止。这时,默认行为是跳回到动画的开始状态。
如果想让动画保持突然终止时的状态,就要使用animation-play-state
属性。
animation-play-state:running || paused
animation-play-state
主要是用来控制元素动画的播放状态。其主要有两个值,running和paused其中running为默认值。通过paused将正在播放的动画停下了,通过running将暂停的动画重新播放,这个属性目前很少内核支持。
三、transform
transform
就是变形,主要包括旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。
transform: none || transform-functions
none:表示不进么变换;transform-function表示一个或多个变换函数,以空格分开;换句话说就是我们同时对一个元素进行transform的多种属性操作,例如rotate、scale、translate三种。
主要的transform-function变换函数如下:
1. translate
值 | 描述 |
---|---|
translate(x,y) | 定义 2D 转换。 |
translate3d(x,y,z) | 定义 3D 转换。 |
translateX(x) | 定义转换,只是用 X 轴的值。 |
translateY(y) | 定义转换,只是用 Y 轴的值。 |
translateZ(z) | 定义 3D 转换,只是用 Z 轴的值。 |
2. scale
值 | 描述 |
---|---|
scale(x,y) | 定义 2D 缩放转换。 |
scale3d(x,y,z) | 定义 3D 缩放转换。 |
scaleX(x) | 通过设置 X 轴的值来定义缩放转换。 |
scaleY(y) | 通过设置 Y 轴的值来定义缩放转换。 |
scaleZ(z) | 通过设置 Z 轴的值来定义 3D 缩放转换。 |
3. rotate
值 | 描述 |
---|---|
rotate(angle) | 定义 2D 旋转,在参数中规定角度。 |
rotate3d(x,y,z,angle) | 定义 3D 旋转。 |
rotateX(angle) | 定义沿着 X 轴的 3D 旋转。 |
rotateY(angle) | 定义沿着 Y 轴的 3D 旋转。 |
rotateZ(angle) | 定义沿着 Z 轴的 3D 旋转。 |
4. skew
值 | 描述 |
---|---|
skew(x-angle,y-angle) | 定义沿着 X 和 Y 轴的 2D 倾斜转换。 |
skewX(angle) | 定义沿着 X 轴的 2D 倾斜转换。 |
skewY(angle) | 定义沿着 Y 轴的 2D 倾斜转换。 |
5. transform-origin
以上变化的默认参照点是元素的中心点,不过可以通过transform-origin
设置元素的参照点。
transform-origin: X || Y || Z
其中X,Y,Z对应三维坐标,X,Y,Z的值可以是em,px。此外,X,Y可以是百分值,其中X也可以是字符参数值left,center,right。Y和X一样除了百分值外还可以设置字符值top,center,bottom。
具体示例就不再写了,情况比较多,实现起来也比较简单。
四、总结
以上是关于CSS3中制作动画的三个属性,内容比较基础,不过却很实用。仅仅只需要CSS,即可实现一些较为简单的动画效果,省去了复杂的js代码。
CSS3的动画属性的更多相关文章
- CSS3展现精彩的动画效果 css3的动画属性
热火朝天的css3无疑吸引了很多前端开发者的眼球,然而在css3中的动画属性则是新功能中的主打招牌,说到css3的动画属性不得不让人想起这三个属性:Transform﹑Transition﹑Anima ...
- CSS3中动画属性transform、transition 和 animation
CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明: transform 从字面来看transform的释义为改变,使 ...
- CSS3中动画属性transform、transition和animation
Transform:变形 在网页设计中,CSS被习惯性的理解为擅长表现静态样式,动态的元素必须借助于javascript才可以实现,而CSS3的出现改变了这一思维方式.CSS3除了增加革命性的创新功能 ...
- CSS3 的动画属性
通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. ㈠@keyframes 规则 ⑴浏览器支持 Firefox 支持替代的 @-moz-ke ...
- css3 animation 动画属性简介
animation 动画属性介绍 animation 属性是一个简写属性,用于设置动画属性: 1. animation-name----规定需要绑定到选择器的 keyframe 名称. 语法:anim ...
- css3之动画属性transform、transition、animation
工作当中,会遇到很多有趣的小动画,使用css3代替js会节省工作量,css3一些属性浏览器会出现不兼容,加浏览器的内核前缀 -moz-. -webkit-. -o- 1.transform rotat ...
- CSS3 @keyframes 动画
CSS3的@keyframes,它可以取代许多网页动画图像,Flash动画,和JAVAScripts. CSS3的动画属性 下面的表格列出了 @keyframes 规则和所有动画属性: 浏览器支持 表 ...
- CSS3动画属性Transform解读
无论你是前端还是设计师,相信你在网页二维空间上的操作早已经得心应手,JS处理时间线的动画也早已经 烂熟于胸.从今天开始,我跟大家分享一些“新”的东西,网页的第三个维度,以及纯CSS实现的动画.限于篇幅 ...
- CSS3制作动画的三个属性
CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation:我们一起学习完了Transform和Transition,让我们对元素实现了一些基本的动画效果,这 ...
随机推荐
- java web 学习笔记 jsp内置对象
jsp2 表达式语言的内置对象 使用方式${object.attributename} 或者${object["attributename"]} pageContext pageS ...
- oralce11g导出dmp然后导入Oracle10g
一次Oracle11g数据库导入 Oracle10g数据库操作笔记 11g备份导入10g的时候会抛错直接阻止导入. 但是有时候还必须得把11g的数据库导入到10g我今天就遇到了这种情况. 一开始 ...
- Python爬虫(十六)_JSON模块与JsonPath
本篇将介绍使用,更多内容请参考:Python学习指南 数据提取之JSON与JsonPATH JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是的人们很容易 ...
- 出现JSONvalue failed .error is Illegal start of token
出现JSONvalue failed .error is Illegal start of token了? 别着急,抽根烟,喝杯水.开工: 1:判断是请求前报的错还是请求后报的错!!这个很重要,我就是 ...
- javascript跳跃式前进(3) - 跳入JSON
前言 JSON崛起不是意外,是顺应时代;相当简洁小巧的书写模式及阅读方式; 基础 看这篇文章: JSON知识点汇总_W3SCHOOL 初步进阶 早期的解析仅仅实用eval() ,可是这货太easy给注 ...
- Unity游戏中使用贝塞尔曲线
孙广东 2015.8.15 比方在3D rpg游戏中.我们想设置弹道,不同的轨迹类型! 目的:这篇文章的主要目的是要给你关于在游戏怎样使用贝塞尔曲线的基本想法. 贝塞尔曲线是最主要的曲线,一般用在 ...
- 看看android基础知识,谁帮我作答
无论怎么着,了解一点android的基本知识还是有必要的,就当开阔一些自己的眼界吧. .. . android的四大功能组件是_activity_,_service_,_BroadcastReceiv ...
- gulp提高微信小程序开发效率
最近公司要求把一套公众号项目的页面迁移到小程序,也就意味着要重新敲一份代码,不能更繁琐了,为了节省时间,提高迁移效率,就决定自己动手用gulp搭一个简易的小程序框架,再记录一下搭建过程.希望有大神 ...
- Spring:Bean生命周期
关于Bean生命周期,我在网上找了两张图: 图1: 图2: 总结起来就是: Bean构建: Bean对象创建 > @Autowired | @Resource> @PostConstruc ...
- 排序sort,统计wc
[root@localhost ~]# sort /etc/passwd 注释:默认按字母升序排 abrt:x::::/etc/abrt:/sbin/nologin adm:x:::adm:/var/ ...