2017-02-14 402 views
0

我试图编码此文字动画效果(please see video)但我离解决方案还很遥远!@keyframes动画文字淡入淡出

你能帮我吗?也许更好地使用JS?

h1.fadeinone { animation: fadeinone 10s;} 
 
h1.fadeintwo { animation: fadeintwo 10s;} 
 
h1.fadeinthree { animation: fadeinthree 10s;} 
 

 
@keyframes fadeinone { 
 
    0% { 
 
    opacity: 0; 
 
    } 
 
    33% { /* 3s for fade in */ 
 
    opacity: 1; 
 
    } 
 

 
} 
 

 
@keyframes fadeintwo { 
 
    0% { 
 
    opacity: 0; 
 
    } 
 

 
    66% { /* 3s for fade in */ 
 
    opacity: 1; 
 
    } 
 
} 
 

 
@keyframes fadeinthree{ 
 
    0% { 
 
    opacity: 0; 
 
    } 
 

 
    100% { /* 3s for fade in */ 
 
    opacity: 1; 
 
    } 
 
} 
 

 
#claim h1 { 
 

 
font-size: 40px; 
 
line-height:40px; 
 
margin:0px; 
 
padding:0px; 
 
color:#FFF; 
 
} 
 

 
#claim {background-color:red;}
<div id="claim"> 
 
<h1 class="fadeinone">DESIGN</h1> 
 
<h1 class="fadeintwo">loren ipsum</h1> 
 
<h1 class="fadeinthree">DOLOR SIT</h1> 
 
</div>

+0

请说明您遇到的确切的错误或问题,以便可以写出集中的答案。 – Treffynnon

回答

1

我认为你正在寻找animation-delay财产。这有点乏味,因为你必须将每行的每个字母分隔成它自己的元素(在这种情况下,我使用了span),然后你必须手动分配每个span自己的延迟,但效果匹配你提供了什么。

此外,通过使用此方法,您只需要一组关键帧,因为您将使用延迟来确定动画何时开始,而不是使用多个动画的百分比。

div span 
 
{ 
 
    opacity: 0; 
 
    animation-name: fadein; 
 
    animation-duration: 3s; 
 
    animation-fill-mode:forwards; 
 
} 
 

 
div span:nth-child(1){animation-delay:0s} 
 
div span:nth-child(2){animation-delay:0.2s} 
 
div span:nth-child(3){animation-delay:0.4s} 
 
div span:nth-child(4){animation-delay:0.6s} 
 
div span:nth-child(5){animation-delay:0.8s} 
 
div span:nth-child(6){animation-delay:1s} 
 

 
@keyframes fadein 
 
{ 
 
    0%{opacity: 0} 
 
    100%{opacity:1} 
 
}
<div> 
 
    <span>D</span><span>E</span><span>S</span><span>I</span><span>G</span><span>N</span> 
 
</div>

当然,你可以用javascript做到这一点,该解决方案将可能是更优雅,更容易修改;然而,那么你必须处理兼容性问题。只要有可能,坚持严格的CSS就会变得更好。

+0

谢谢你的解决方案是完美的! www.gfgstyle.it – Fabri