2014-12-09 25 views
4

所以我期待创建一个非常基本的雪效果。如何无限期地运行CSS动画

我有一个关键帧动画的摇摆左右摇摆,并沿Y轴向下移动。我希望元素使用forward来保留结尾值。但我也想要循环动画(无限),以便它继续停止。

HTML:

<div> 
    <figure class="small"></figure> 
</div> 

CSS:

div { 
    width: 100%; 
    height: 250px; 
    background: #184254; 
} 

figure { 
    border-radius: 50%; 
} 

@-webkit-keyframes snowfall { 
    25% { 
    transform: translateX(10px) translateY(20px); 
     } 
    75% { 
    transform: translateX(-10px) translateY(30px); 
    } 
    100% { 
    transform: translateX(0px) translateY(40px); 
    } 
} 

.small { 
    margin-left: 100px; 
    width: 7px; 
    height: 7px; 
    background: #DFE9ED; 
    -webkit-animation: snowfall 2s ease-in-out forwards infinite; 
} 

http://codepen.io/mildrenben/pen/PwZdXB

+0

@Danko我猜他想重复'figure'相同的路径,但是从终点开始(以下及以下,低于意思)。只是不要编码整个路径到页面底部 – Anarion 2014-12-09 12:44:33

+0

@Anarion毫米是的,你是对的 – DaniP 2014-12-09 12:45:32

回答

6

您可以使用两个动画,一个移动左右等,使其下降。

自上而下的动画将与绝对定位一起使用,因此它将取决于身高(或其第一个父母与absoluterelative定位)。

figure { 
    border-radius: 50%; 
    position: absolute; 
} 

@-webkit-keyframes snowside { 
25% { 
    transform: translateX(10px); 
     } 
    75% { 
    transform: translateX(-10px); 
    } 
    100% { 
    transform: translateX(0px); 
    } 
} 
@-webkit-keyframes snowfall { 
    0% { 
    top: 0; 
    } 
    100% { 
    top: 100%; 
    } 
} 

.small { 
    margin-left: 100px; 
    width: 7px; 
    height: 7px; 
    background: #DFE9ED; 
    -webkit-animation: snowside 2s ease-in-out forwards infinite, snowfall 15s ease-in-out forwards infinite; 
} 

http://codepen.io/anon/pen/YPwOMY

+1

好的队友,加1,请补充你的答案与解释如何上/下。基于容器的高度工作。 – DaniP 2014-12-09 12:49:08

+0

为所有浏览器支持添加['transform'](http://caniuse.com/#search=transform)和['animation'](http://caniuse.com/#feat=css-animation)的供应商前缀。 – 2014-12-09 12:53:03