animation动画中的transform设置
来源:2-14 项目作业
且听风吟720
2019-08-21 12:18:59
老师好,最开始我在animation这个css文件中写动画效果,关键帧里用transform设置云的偏移,但是发现这样一来structure里设置的scale就无效了,想问问老师是什么原因呢?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>小兔子动画</title> <link rel="stylesheet" href="css/structure.css"> <link rel="stylesheet" href="css/animation.css"> </head> <body> <section class="sky"> <div class="cloud_1"> <div class="cloud"></div> </div> <div class="cloud_2"> <div class="cloud_new"></div> </div> <div class="cloud_3"> <div class="cloud"></div> </div> <div class="cloud_4"> <div class="cloud_new"></div> </div> <div class="cloud_5"> <div class="cloud"></div> </div> </section> <section class="ground"> <img class="rabbit" src="img/rabbit.png"></img> </section> </body> </html>
structure的css设置
/*清除全局默认样式*/
*{margin:0;padding:0;}
/*整体一个大的画布*/
section.sky{
width:100%;height:60vh;
position:relative;top:0;
background:linear-gradient(180deg,rgba(196,228,253,0.8),rgba(255,255,255,1));
overflow:hidden;
}
section.ground{
width:100%;height:40vh;
position:relative;bottom:0;
background:linear-gradient(0deg,rgba(148,190,89,0.8),rgba(255,255,255,1));
}
/*云朵的样式*/
/*定位用的外框,也是用来放云朵并缩放的框*/
.cloud_1{
width:380px;height:100px;
position:absolute;top:100px;right:-200%;
transform:scale(0.38);
opacity:0.9;
}
.cloud_2{
width:380px;height:100px;
position:absolute;top:150px;right:-200%;
transform:scale(0.5);
opacity:0.75;
}
.cloud_3{
width:380px;height:100px;
position:absolute;top:40px;right:-200%;
transform:scale(0.4);
opacity:0.95;
}
.cloud_4{
width:380px;height:100px;
position:absolute;top:120px;right:-200%;
transform:scale(0.25);
opacity:0.85;
}
.cloud_5{
width:380px;height:100px;
position:absolute;top:180px;right:-200%;
transform:scale(0.4);
opacity:0.95;
}
/*云朵的组成,主体和before为两个长条,after为一个椭圆*/
.cloud{
width:380px;height:80px;
background:rgba(255,255,255,1);
position:absolute;top:20px;
border-radius:10%/50%;
}
.cloud::before{
content:'';
width:200px;height:80px;
background:rgba(255,255,255,1);
position:absolute;top:-20px;left:20px;
border-radius:20%/50%;
transform:rotate(45deg);
}
.cloud::after{
content:'';
width:280px;height:230px;
background:rgba(255,255,255,1);
position:absolute;top:-130px;right:20px;
border-radius:50%;
}
/*另一种云朵的样式*/
.cloud_new{
width:380px;height:80px;
background:rgba(255,255,255,1);
position:absolute;top:20px;
border-radius:10%/50%;
}
.cloud_new::before{
content:'';
width:110px;height:80px;
background:rgba(255,255,255,1);
position:absolute;top:-40px;right:30px;
border-radius:50%;
}
.cloud_new::after{
content:'';
width:280px;height:230px;
background:rgba(255,255,255,1);
position:absolute;top:-130px;left:20px;
border-radius:50%;
}
/*兔子*/
.rabbit{
position:absolute;bottom:50px;right:200px;
width:200px;height:200px;
}animation的css设置
/*第一朵云动画*/
.cloud_1{animation:cloud1 15s 9s infinite linear;}
@keyframes cloud1{
0%{right:100px;}
100%{right:1800px;}
}
/*第二朵云动画*/
.cloud_2{animation:cloud2 16s infinite linear;}
@keyframes cloud2{
0%{right:150px;}
100%{right:2000px;}
}
/*第三朵云动画*/
.cloud_3{animation:cloud3 20s 3s infinite linear;}
@keyframes cloud3{
0%{right:0;}
100%{right:2200px;}
}
/*第四朵云动画*/
.cloud_4{animation:cloud4 18s 5s infinite linear;}
@keyframes cloud4{
0%{right:50px;}
100%{right:2000px;}
}
/*第五朵云动画*/
.cloud_5{animation:cloud5 18s 7s infinite linear;}
@keyframes cloud5{
0%{right:180px;}
100%{right:1800px;}
}1回答
同学你好, 因为开始使用transform属性设置元素的scale值, 之后在动画帧直接使用transform属性设置元素的translate值,导致前面设置的scale值被覆盖, 所以缩放无效。
建议: 在动画帧里使用transform属性的时候,按着值的顺序书写, 老师这里给出一个简单的示例, 距离的值需要同学自己下去调整哦


如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
相似问题