老师,关于云的运动有一个问题想请教一下
来源:2-14 项目作业
慕田峪2009896
2019-08-27 13:21:44
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{
padding:0;
margin:0;
}
body{width:100%;
height: 100vh;
oeerflow:hidden;
}
.sky{
width: 100%;
height:60vh;
background:linear-gradient(180deg,rgb(196,228,253),rgba(196,228,253,0));
position: relative;
}
.grass{
width: 100%;
height:40vh;
background:linear-gradient(0deg,rgb(148,190,89),rgba(148,190,89,0));
}
.sky>.cloud{
width:200px;
height:70px;
background:#FFF;
position:absolute;
/*top:100px;
left:100px;*/
border-radius: 35px/35px;
}
.sky>.cloud:before{
content: "";
width:106px;
height:60px;
background:#FFF;
position:absolute;
top: 9px;
left: 5px;
border-radius: 30px/30px;
transform:rotate(80deg);
}
.sky>.cloud:after{
content: "";
width:130px;
height:130px;
background:#FFF;
position:absolute;
top: -47px;
left: 53px;
border-radius: 50%;
}
.sky>.cloud.one{
top: 180px;
right: 303px;
opacity: 1;
animation: move1 2s linear infinite;
}
.sky>.cloud.two{
top: 56px;
right: 500px;
opacity: 0.7;
transform: scale(.65);
}
.sky>.cloud.three{
top: 120px;
right:50px;
opacity: 0.8;
transform: scale(.9);
}
.sky>.cloud.four{
top: 180px;
right: -300px;
opacity: 0.4;
transform: scale(.7);
}
.sky>.cloud.five{
top: 96px;
right: -300px;
opacity: 0.6;
transform: scale(1.1);
}
@keyframes move1{
0% {right: 303px;}
100% {right:105%;}
}
</style>
</head>
<body>
<div class="sky">
<div class="cloud one"></div>
<div class="cloud two"></div>
<div class="cloud three"></div>
<div class="cloud four"></div>
<div class="cloud five"></div>
</div>
<div class="grass"></div>
</body>
</html>
如果我这样设置的话,云每次运动出现的地方就是right: 303px;应该要怎么设置,才可以让于云在运动到左边之后,再从右边重新出现啊?
1回答
同学你好, 你的这种写法不可以实现云朵初始位置在303px, 运动到左边之后,从右边重新出现。
建议: 可以一开始设置云朵就是在最右边, 然后通过控制动画的延迟时间和执行动画的时间,实现动画效果。示例:
(1)调整动画帧

(2)给云朵设置动画

另, 代码中overflow单词拼写错误, 建议修改:

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