css中transition-transform-animation的用法

偶尔善良 提交于 2020-03-17 11:00:51

对css中的transition(过渡)-transform(转换)-animation(动画)认识的不够清楚,今天就放一起集中解决了。

1.transition-过渡

元素属性的过渡效果,通常配合hover实现元素初始样式到hover中样式的过渡,语法如下:

1 transition: property duration timing-function delay;
property:属性,可以写allduration:持续时间timing-function:变化的曲线delay:延迟transition

元素属性transition要定义在元素的初始样式内,hover内写目标属性值

1 div
2 {
3     width:100px;
4     transition: width 2s;
5 }
6 div:hover {width:300px;}

 

2.transform-转换

2D转换有元素旋转(rotate),缩放(scale),移动(translate)

1 transform: rotate(45deg);  /*旋转的单位为deg*/
2 transform: scale(1.2);  /*缩放的倍数,1是原始大小*/
3 transform: translate(20px, 20px);  /*参数分别是水平方法和垂直方向移动的数值,移动的单位可以为像素,也可以为百分比,特别注意以百分比为单位时是相对于自身的百分比*/

 

3.animation-动画

需要先定义关键帧(keyframes)动画,然后绑定到元素。

关键帧keyframes的定义:

 1 /* @keyframes 后是动画名称, 不同的百分比对应动画过程中不同的状态,0%是开始,100%是结束*/
 2 @keyframes animationname { 
 3         0% {
 4           background-color: #fff;
 5         }
 6         50% {
 7           background-color: #ff4500;
 8         }
 9         100% {
10           background-color: #ffb90f;
11         }
12       }

动画的调用:

 1 /*语法animation: name duration timing-function delay iteration-count direction fill-mode play-state;
 2 name :关键帧动画的名称
 3 duration :单次动画的持续时长
 4 timing-function:速度曲线,如linear或ease
 5 iteration-count:动画播放次数,数字或infinite即无限次
 6 */
 7 div
 8 {
 9     animation:animationname 5s;
10 }

 

完整示例如下,复制后放入HTML文件中用浏览器打开即可看到效果。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3   <head>
 4     <meta charset="UTF-8" />
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 6     <title>过渡-变换-动画</title>
 7     <style>
 8       div {
 9         color: #fff;
10         margin-top: 30px;
11       }
12 
13       /* transition 通常配合hover使用,语法transition: 属性 时间 过渡曲线;
14       也可以transition: all 时间 过渡曲线; 过渡曲线可省略
15       hover时transition的属性有过渡效果,没有加过渡的其他一次性改变 */
16       .box1 {
17         height: 100px;
18         width: 100px;
19         background-color: #ffc0cb;
20         /* transition: width 2s ease; */
21         /* transition: border 2s ease; */
22         /* transition: padding 2s ease; */
23         transition: all 2s ease;
24       }
25 
26       .box1:hover {
27         padding: 10px;
28         border: 10px solid #333;
29         height: 80px;
30         width: 80px;
31         background-color: #87ceeb;
32       }
33 
34       /* transfrom 2d 主要有三种变换 translate平移 rotate旋转 scale缩放
35       transform-origin可以设置变换的中心点
36       而且translate在以百分比%为单位时是相对于自身的,可以结合绝对定位实现居中top:50%; left:50%; transform: translate(50%, 50%);
37       transfrom不会影响其他盒子 */
38       .box2 {
39         width: 100px;
40         height: 100px;
41         background-color: #87ceeb;
42         /* transform: translate(50%, 50%); */
43         transform: rotate(45deg);
44         /* transform: scale(1.2); */
45       }
46 
47       /* animation需要先定义关键帧动画,然后再通过动画名称调用,设置动画时长 */
48       @keyframes run {
49         0% {
50           transform: translate(0);
51         }
52         100% {
53           transform: translate(200px);
54         }
55       }
56       @keyframes bgc {
57         0% {
58         }
59         50% {
60           background-color: #ff4500;
61         }
62         100% {
63           background-color: #ffb90f;
64         }
65       }
66       @keyframes rotateAnimation {
67         0% {
68         }
69         100% {
70           transform: rotate(360deg);
71         }
72       }
73       .box3 {
74         width: 100px;
75         height: 100px;
76         background-color: #90ee90;
77         animation-name: run, bgc;
78         animation-duration: 2s;
79       }
80       /* animation: rotateAnimation 2s infinite linear;
81       rotateAnimation是定义的关键帧动画名称,2s一次动画的时候,infinite永久循环,linear线性变化 */
82       .box3:hover {
83         animation: rotateAnimation 0.2s infinite linear;
84       }
85     </style>
86   </head>
87   <body>
88     <div class="box1">
89       过渡 transition
90     </div>
91     <div class="box2">
92       变换 transform
93     </div>
94     <div class="box3">
95       动画 animation
96     </div>
97   </body>
98 </html>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!