Sur mon site Web, je veux un en-tête qui apparaît et disparaît progressivement, puis avec un texte différent, puis en-dehors, puis redevenant normal (en boucle). Voici comment je voudrais que cela fonctionne:
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"}
}
Cependant, je n'ai trouvé aucun moyen de modifier le texte dans une animation CSS3. Est-ce possible?
Vous pouvez le faire de deux manières. L'une consiste à faire gérer le contenu par un pseudo-élément. Cela signifie que le contenu affiché serait appliqué dans CSS. comme ça:
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"}
}
Une autre façon de procéder consiste à avoir deux éléments dans le code HTML et à les basculer entre eux. Vous aurez besoin de deux animations pour travailler ensemble ou vous pourrez peut-être simplement décaler une animation, comme ceci:
<header>
<h1 class="headtext" id="text1">Original Text</h1>
<h1 class="headtext" id="text2">Changed Text</h1>
</header>
.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;}
}
J'ai réduit le font-size
à 0
pour laisser la place à l'autre texte. Cet effet peut être différent de celui souhaité.
Il y a une heure, j'étais coincé avec la même question mais ma décision est la suivante. Je viens de coller une partie de mon propre code. Regardez ça les gars!
body {
margin: 0;
font-family: sans-serif;
}
#wrapper {
background-color: #051E3E;
height: 100vh;
color: white;
display: flex;
justify-content: center;
align-items: center;
}
#hi {
animation: Pulse 5s;
}
@keyframes Pulse {
0% {
color: #051E3E;
}
10% {
color: #051E3E;
}
30% {
color: white;
}
50% {
color: #051E3E;
}
60% {
color: #051E3E;
}
80% {
color: white;
}
100% {
color: #051E3E;
}
}
#hi:after {
content: "";
animation: spin 5s linear;
}
@keyframes spin {
0% { content:"Hi"; }
100% { content:"How do you like it?"; }
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="wrapper">
<p id="hi"></p>
</div>
</body>
</html>