2017-02-14 66 views
3

在我的网站中,我希望有一个淡入淡出的标题,然后用不同的文本,然后出来,然后回到正常(循环)。下面是我希望它的工作原理:用CSS3动画改变文字?

h1 { 
    font-size: 600%; 
    animation-name: head; 
    animation-duration: 4s; 
    animation-iteration-count: infinite; 
} 
@keyframes head { 
0% {font-size:600%; opacity:1;} 
25% {font-size:570%; opacity:0;} 
50% {font-size:600%; opacity:1;} 
65% {font-size:570%; opacity:0;} 
80% {font-size:600%; opacity:1; innerHtml="Changed Text"} 
90% {font-size:570%; opacity:0;} 
100% {font-size:600%;opacity:1; innerHtml="Original Text"} 
} 

但是,我还没有找到任何方法来更改CSS3动画中的文本。这可能吗?

+0

想要做同样的事情,而不是CSS,我用jQuery。不适合每个人,不是CSS,但你可以做$('#SomeElement')。hide()。text('Some Text Animation')。fadeIn(300); – frenchie

回答

4

有两种方法可以做到这一点。一种是让内容由伪元素管理。这意味着显示的内容将应用于CSS内部;像这样:

CSS

h1:before{ 
    content: 'Original Text'; 
    font-size: 600%; 
    animation-name: head; 
    animation-duration: 4s; 
    animation-iteration-count: infinite; 
} 

@keyframes head { 
    0% {font-size:600%; opacity:1;} 
    25% {font-size:570%; opacity:0;} 
    50% {font-size:600%; opacity:1;} 
    65% {font-size:570%; opacity:0;} 
    80% {font-size:600%; opacity:1; content: "Changed Text"} 
    90% {font-size:570%; opacity:0;} 
    100% {font-size:600%;opacity:1; content: "Original Text"} 
} 

你可以做到这一点的另一种方式是由具有在HTML两种元素以及它们之间的切换。你需要两个动画是工作一起做,或者你也许可以抵消只是一个动画,就像这样:

HTML

<header> 
    <h1 class="headtext" id="text1">Original Text</h1> 
    <h1 class="headtext" id="text2">Changed Text</h1> 
</header> 

CSS

.headtext{ 
    font-size: 600%; 
    animation-name: head; 
    animation-duration: 4s; 
    animation-iteration-count: infinite; 
} 

#text2{ 
    animation-delay: 2s; 
} 

@keyframes head { 
    0% {font-size:600%; opacity:1;} 
    50% {font-size:0; opacity:0;} 
    100% {font-size:600%;opacity:1;} 
} 

我已经将font-size减少为0,以便为其他文本提供空间。这可能与您想要的效果不同。

+0

谢谢!两种方式都很好。 – user7548189

+0

我不知道为什么,但关键帧是重叠的,并且在淡出/进入之前单词正在改变。即使我从0不透明度到1不透明度关键帧0% - 10%,将不透明度0的缓冲区设置为15%,然后再以25%的速度消失,文本仍在跳跃。 – GibsonFX