我试图动画一个应该像云一样从右向左移动的地板,它可以工作,但问题是它在容器外溢出。我怎样才能防止这种情况发生?对不起,我是css动画的新手。提前谢谢。
以下是我提出的小提琴:点击here
.container {
width: 50%;
margin: 0 auto;
text-align: center;
}
#clouds{
padding: 100px 0;
background: #3598dc;
background: -webkit-linear-gradient(top, #3598dc 0%, #fff 100%);
background: -linear-gradient(top, #3598dc 0%, #fff 100%);
background: -moz-linear-gradient(top, #3598dc 0%, #fff 100%);
}
.cloud {
width: 200px; height: 60px;
background: #fff;
border-radius: 200px;
-moz-border-radius: 200px;
-webkit-border-radius: 200px;
position: relative;
}
.cloud:before, .cloud:after {
content: '';
position: absolute;
background: #fff;
width: 100px; height: 80px;
position: absolute; top: -15px; left: 10px;
border-radius: 100px;
-moz-border-radius: 100px;
-webkit-border-radius: 100px;
-webkit-transform: rotate(30deg);
transform: rotate(30deg);
-moz-transform: rotate(30deg);
}
.cloud:after {
width: 120px; height: 120px;
top: -55px; left: auto; right: 15px;
}
#character{
margin-top: -120px;
background:url(http://i.imgur.com/Zjsbcni.png);
width: 84px;
height: 126px;
animation: walk 1.0s steps(6) infinite;
margin-left: 425px;
}
#flooring {
height: 39px;
background-image: url(http://i.imgur.com/usFekrp.png);
animation: movefloor 20s linear infinite;
overflow: hidden;
}
@keyframes movefloor {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@keyframes walk {
from { background-position: 0px; }
to { background-position: -500px; }
}
.x1 {
-webkit-animation: moveclouds 15s linear infinite;
-moz-animation: moveclouds 15s linear infinite;
-o-animation: moveclouds 15s linear infinite;
}
.x2 {
left: 200px;
-webkit-transform: scale(0.6);
-moz-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.6; /*opacity proportional to the size*/
-webkit-animation: moveclouds 25s linear infinite;
-moz-animation: moveclouds 25s linear infinite;
-o-animation: moveclouds 25s linear infinite;
}
.x3 {
left: 252px;
top: -200px;
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
transform: scale(0.8);
opacity: 0.8; /*opacity proportional to the size*/
-webkit-animation: moveclouds 20s linear infinite;
-moz-animation: moveclouds 20s linear infinite;
-o-animation: moveclouds 20s linear infinite;
}
@-webkit-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@-moz-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@-o-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}

<div class="container">
<div id="clouds">
<div class="cloud x1"></div>
<div class="cloud x2"></div>
<div class="cloud x3"></div>
<div class="cloud x4"></div>
<div class="cloud x5"></div>
</div>
<div id="character"></div>
<div id="flooring"></div>
</div>
&#13;
答案 0 :(得分:3)
将overflow: hidden;
添加到ID&#34;云&#34;
#clouds{
overflow: hidden;
}
的示例
答案 1 :(得分:2)
将overflow:hidden
添加到#clouds
:
body {
font-family: 'Candal', sans-serif;
overflow: hidden;
background-color:black;
/* remove this line, this is to prove the cloud is invisible ^^^ */
}
.container {
width: 50%;
margin: 0 auto;
text-align: center;
}
#clouds{
padding: 100px 0;
background: #3598dc;
background: -webkit-linear-gradient(top, #3598dc 0%, #fff 100%);
background: -linear-gradient(top, #3598dc 0%, #fff 100%);
background: -moz-linear-gradient(top, #3598dc 0%, #fff 100%);
overflow:hidden;
/* add this line ^^^ */
}
.cloud {
width: 200px; height: 60px;
background: #fff;
border-radius: 200px;
-moz-border-radius: 200px;
-webkit-border-radius: 200px;
position: relative;
}
.cloud:before, .cloud:after {
content: '';
position: absolute;
background: #fff;
width: 100px; height: 80px;
position: absolute; top: -15px; left: 10px;
border-radius: 100px;
-moz-border-radius: 100px;
-webkit-border-radius: 100px;
-webkit-transform: rotate(30deg);
transform: rotate(30deg);
-moz-transform: rotate(30deg);
}
.cloud:after {
width: 120px; height: 120px;
top: -55px; left: auto; right: 15px;
}
#character{
margin-top: -120px;
background:url(http://i.imgur.com/Zjsbcni.png);
width: 84px;
height: 126px;
animation: walk 1.0s steps(6) infinite;
margin-left: 425px;
}
#flooring {
height: 39px;
background-image: url(http://i.imgur.com/usFekrp.png);
animation: movefloor 20s linear infinite;
overflow: hidden;
}
@keyframes movefloor {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@keyframes walk {
from { background-position: 0px; }
to { background-position: -500px; }
}
.x1 {
-webkit-animation: moveclouds 15s linear infinite;
-moz-animation: moveclouds 15s linear infinite;
-o-animation: moveclouds 15s linear infinite;
}
/*variable speed, opacity, and position of clouds for realistic effect*/
.x2 {
left: 200px;
-webkit-transform: scale(0.6);
-moz-transform: scale(0.6);
transform: scale(0.6);
opacity: 0.6; /*opacity proportional to the size*/
/*Speed will also be proportional to the size and opacity*/
/*More the speed. Less the time in 's' = seconds*/
-webkit-animation: moveclouds 25s linear infinite;
-moz-animation: moveclouds 25s linear infinite;
-o-animation: moveclouds 25s linear infinite;
}
.x3 {
left: 252px;
top: -200px;
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
transform: scale(0.8);
opacity: 0.8; /*opacity proportional to the size*/
-webkit-animation: moveclouds 20s linear infinite;
-moz-animation: moveclouds 20s linear infinite;
-o-animation: moveclouds 20s linear infinite;
}
.x4 {
left: 470px;
top: -250px;
-webkit-transform: scale(0.75);
-moz-transform: scale(0.75);
transform: scale(0.75);
opacity: 0.75; /*opacity proportional to the size*/
-webkit-animation: moveclouds 18s linear infinite;
-moz-animation: moveclouds 18s linear infinite;
-o-animation: moveclouds 18s linear infinite;
}
.x5 {
left: -150px;
top: -150px;
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
transform: scale(0.8);
opacity: 0.8; /*opacity proportional to the size*/
-webkit-animation: moveclouds 20s linear infinite;
-moz-animation: moveclouds 20s linear infinite;
-o-animation: moveclouds 20s linear infinite;
}
@-webkit-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@-moz-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
@-o-keyframes moveclouds {
0% {margin-left: 1000px;}
100% {margin-left: -1000px;}
}
<div class="container">
<h1>CSS3 Animation</h1>
<div id="clouds">
<div class="cloud x1"></div>
<div class="cloud x2"></div>
<div class="cloud x3"></div>
<div class="cloud x4"></div>
<div class="cloud x5"></div>
</div>
<div id="character"></div>
<div id="flooring"></div>
</div>
答案 2 :(得分:1)
修复1:云层溢出容器:
正文上的 overflow: hidden
只会隐藏溢出页面正文的元素。因此,您需要将overflow: hidden
添加到div #clouds
。
修改#clouds
,如下所示:
#clouds {
padding: 100px 0;
background: #3598dc;
background: -webkit-linear-gradient(top, #3598dc 0%, #fff 100%);
background: -linear-gradient(top, #3598dc 0%, #fff 100%);
background: -moz-linear-gradient(top, #3598dc 0%, #fff 100%);
overflow: hidden;
}
修复2:隐藏地板动画
地板动画是隐藏的,因为它会溢出身体。将正文中的overlfow: hidden
更改为overflow-x: hidden
修改body
,如下所示:
body {
font-family: 'Candal', sans-serif;
overflow-x: hidden;
}
答案 3 :(得分:1)
<强>解决方案强>
我认为您应该将overflow: hidden;
添加到.container
和#clouds
,因为每个元素都包含在.container
中。云定位于绝对位置,因此它们可能会在.container
内溢出,因此overflow: hidden;
会应用于#clouds
。如果您希望它位于容器内,也可以更改#character
的边距。
<强> CSS 强>
.container {
margin: 0 auto;
overflow: hidden;
text-align: center;
width: 50%;
}
#clouds {
background: #3598dc;
background: -webkit-linear-gradient(top, #3598dc 0%, #fff 100%);
background: -linear-gradient(top, #3598dc 0%, #fff 100%);
background: -moz-linear-gradient(top, #3598dc 0%, #fff 100%);
overflow: hidden;
padding: 100px 0;
}
#character{
animation: walk 1.0s steps(6) infinite;
background:url(http://i.imgur.com/Zjsbcni.png);
height: 126px;
margin-left: 320px;
margin-top: -120px;
width: 84px;
}