css3是什么 ptml_CSS3的animation属性
发布日期:2021-06-24 15:05:22 浏览次数:2 分类:技术文章

本文共 4462 字,大约阅读时间需要 14 分钟。

Css3中关于动画制作的有3个属性:Transform,Transition,Animation.

我首先学习用Animation如何实现一个动画效果。CSS3中的Animation和HTML5中的绘制效果不同,Animation只应用在页面上已存在的DOM元素上,而且跟Flash和javascript制作出来的动画效果又不一样,因为使用CSS3的animation制作动画可以省去复杂的js,jquery代码。

在学习animation之前,先了解一个特殊的东西,就是KeyFrames,叫做关键帧。

Keyframes有自己的语法规则,他的命名由“@keyframes”开头,后面紧接着“动画名称” 和一对花括号{},括号中是一些不同时间段的样式规则。”@keyframes”  中的样式规则是由多个百分比构成的,如 0%到100%之间。我们可以在这个规则中创建多个百分比,同时分别给每一个百分比中需要有动画效果的元素加上不同的属性,从而达到一种在不断变化的效果。比如移动,改变元素颜色,位置,大小,形状等。同样也可以使用from ,to来代表一个动画从哪开始,到哪结束。From相当于0%而to相当于100%。

需要注意的地方是:0%不能像别的属性取值一样把百分比符号省略,在这里必须加上% (0%),如果没有加上的话,这个keyframes是无效的,不起任何作用。因为keyframes的单位只接受百分比值。

Keyframes可以指定任何顺序排列 来决定Animation动画变化的关键位置。

具体语法规则如下:

@keyframes Name{

0%{ Properties: value;}

Percentage{ Properties: value;}

100%{ Properties: value; }

}

1

2

3

4

5

6

7

8

9

@keyframesName{

0%{Properties:value;}

Percentage{Properties:value;}

100%{Properties:value;}

}

或者写成from  ,to 的形式:

@keyframes name{

From{ Properties: value;}

Percentage{ Properties: value;}

To{ Properties: value;}

}

1

2

3

4

5

6

7

8

9

@keyframesname{

From{Properties:value;}

Percentage{Properties:value;}

To{Properties:value;}

}

其中name是一个动画名称,可以随便取,当然语义化更好一点。

Percentage是百分比值,可以根据需要添加多个百分比.

Properties为css的属性名。比如left,background等。Value就是相对应属性的属性值。

到目前为止animation动画只有webkit内核的浏览器支持,所以我们需要在上面的基础上加上-webkit前缀,据说firefox5可以支持CSS3的animation动画属性。

看一个W3C官网的实例:

这里我们定义了一定叫 “wobble”的动画,动画师从0%开始到100%时结束,中间还经历了40%和60%两个过程。上面代码具体意思是:wobble动画在0%时元素定位到left 为100px的位置,背景色为green;然后40%时元素过渡到left为150px的位置并且背景色为orange;60%时元素过渡到left为75px的位置,背景色为blue;最后100%结束动画的位置,元素又回到left为100px处,背景色变成red。假设我们设置这个动画有10s的执行时间,那么每一段执行的状态如下图所示:

Keyframes 定义好了以后,我们需要怎么去调用定义好的动画“wobble”?

CSS3的animation 类似于transition属性,他们都是随着时间改变元素的属性值。主要区别是transition需要触发一个事件(hover事件或click事件等)才会随其时间改变CSS属性;而animation在不需要触发任何事件就可以显式的随着时间的变化来改变元素CSS的属性值,从而达到一种动画效果。这样我们就可以直接在一个元素中调用animation的动画属性。基于这一点,css3的animation就需要明确动画属性值,需要keyframes来定义不同时间的CSS属性值,达到元素在不同时间段变化的效果。

下面我们来看看怎么让一个元素调用animation属性

.demo1{

Width:50px;

Height:50px;

Margin-left:100px;

@-webkit-keyframes ‘wobble’ {

%0{

Margin-left:100px;

Background:green;

}

40%{

Margin-left:150px;

Background:orange;

}

60%{

Margin-left:75px;

Background:blue;

}

100%{

Margin-left:100px;

Background:red;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

@-webkit-keyframes‘wobble’{

%0{

Margin-left:100px;

Background:green;

}

40%{

Margin-left:150px;

Background:orange;

}

60%{

Margin-left:75px;

Background:blue;

}

100%{

Margin-left:100px;

Background:red;

}

}

Background:blue;

-webkit-animation-name:’wobble’;/*动画属性名,也就是我们前面keyframes定义的动画名*/

-webkit-animation-delay:2s; /*动画延迟时间*/

-webkit-animation-duration:10s; /*动画持续时间*/

-webkit-animation-iteration-count:10;/*定义循环资料;infinite为无限次*/

-webkit-animation-timing-function:ease-in-out;/*动画频率,和transition-timing-function是一样的*/

-webkit-animation-direction:alternate;/*定义动画方式*/

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Background:blue;

-webkit-animation-name:’wobble’;/*动画属性名,也就是我们前面keyframes定义的动画名*/

-webkit-animation-delay:2s;/*动画延迟时间*/

-webkit-animation-duration:10s;/*动画持续时间*/

-webkit-animation-iteration-count:10;/*定义循环资料;infinite为无限次*/

-webkit-animation-timing-function:ease-in-out;/*动画频率,和transition-timing-function是一样的*/

-webkit-animation-direction:alternate;/*定义动画方式*/

}

CSS Animation动画效果将会影响元素响应的CSS值,在整个动画过程中,元素的变化属性值完全由animation来控制,动画后面会覆盖前面的属性值。他们不会产生叠加效果,只是一次一次覆盖前一次出现的css属性。

Animation常用属性介绍:

1.animation-name: name | none

Animation-name:用来定义一个动画名称,主要有两个值,name是由keyframes创建的动画名,换句话说此处的name要和keyframes中的name一致,如果不一致,将不能实现任何动画效果;none为默认值,当值为none时,将没有任何动画效果。另外这个属性与transition一样,我们可以附几个animation给一个元素,只需要用逗号,隔开。

2.animation-duration:

用来指定元素播放动画所持续的时长,取值 time为数值,单位为s秒。其默认值为“0”。这个属性跟transition中的transition-duration使用方法一样。

3. Animation-iteration-count: | infinite

Animation-iteration-count用来指定元素播放动画 循环的次数,其可以取值为数字,默认值为1,infinite为无限次数循环。

4. Animation-delay:

Animation-delay:用来指定元素动画开始时间。取值为为数值,单位为s(秒),默认值为0。这个属性和tianstion-delay使用的方法一样的。

5. Animation-timing-function:

Animation-timing-function:是指元素根据时间的推进来改变属性值的变换速率,就是动画播放的方式。他和transition中的transition中的transition-timing-function一样,具有一下几种变换方式:ease,  ease-in,  ease-in-out, linear, cubic-bezier.

6.Animation-direction:  normal | alternate

Animation-direction用来指定元素动画播放的方向,其中有两个值,默认值为normal,如果设置为normal时,动画每次循环都是向前播放;另外一个值alternate:作用是动画播放在第偶次数时向前播放,第奇数次时向反方向播放。

7. Animation-play-state: running | paused

用来控制动画的播放状态。其主要有两个值,running和paused。

Running为默认值。他们的作用类似我们的音乐播放器一样,可以通过paused将正在播放的动画停下,也可以通过running将暂停的动画重新播放。而我们这里的重新播放不一定是从元素动画开始播放,而是从暂停的位置开始播放。

转载地址:https://blog.csdn.net/weixin_33554514/article/details/112895399 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mac 文字识别软件ocr_Mac平台上一款免费的OCR文字识别功能的屏幕截图软件Screen OCR...
下一篇:fetch 不是xhr_fetch与xhr的对比

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月07日 04时57分44秒