Actuellement, j'ai ce code:
@-webkit-keyframes blinker {
from { opacity: 1.0; }
to { opacity: 0.0; }
}
.waitingForConnection {
-webkit-animation-name: blinker;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: cubic-bezier(.5, 0, 1, 1);
-webkit-animation-duration: 1.7s;
}
Il clignote, mais il ne clignote que dans "une seule direction". Je veux dire, il disparaît seulement, puis il apparaît de nouveau avec opacity: 1.0
, puis disparaît à nouveau, apparaît à nouveau, etc.
Je voudrais qu'il disparaisse, puis "rehausse" de ce fondu à nouveau opacity: 1.0
. Est-ce possible?
Réponses:
Vous définissez d'abord
opacity: 1;
et ensuite vous le terminez0
, donc il commence à partir de0%
et se termine100%
, donc placez simplement l'opacité à0
at50%
et le reste prendra soin de lui-même.Démo
Ici, je règle la durée de l'animation sur
1 second
, puis je règle latiming
surlinear
. Cela signifie qu'il sera constant tout au long. Enfin, j'utiliseinfinite
. Cela signifie que cela continuera indéfiniment.Comme indiqué, cela ne fonctionnera pas sur les anciennes versions d'Internet Explorer, et pour cela, vous devez utiliser jQuery ou JavaScript ...
Merci à Alnitak d'avoir proposé une meilleure approche .
Démo (clignotant utilisant jQuery)
la source
blinker
comme rappel de fin de l'.fadeIn
appel.(function blink() { $('.blink_me').fadeOut(500).fadeIn(500, blink); })();
step-end
au lieu delinear
c'était ce que je voulais.Utilisez la
alternate
valeur deanimation-direction
(et vous n'avez pas besoin d'ajouter de kéframes de cette façon).CSS :
J'ai supprimé l'
from
image clé. S'il est manquant, il est généré à partir de la valeur que vous avez définie pour la propriété animée (opacity
dans ce cas) sur l'élément, ou si vous ne l'avez pas définie (et vous ne l'avez pas dans ce cas), à partir de la valeur par défaut (qui est1
pouropacity
).Et veuillez ne pas utiliser uniquement la version WebKit. Ajoutez également celui non préfixé. Si vous voulez simplement écrire moins de code, utilisez le raccourci .
la source
cubic-bezier
pièce parease-in-out
ou autre chose: cubic-bezier.comLa meilleure façon d'obtenir un clignotement pur "100% allumé, 100% éteint", comme l'ancien,
<blink>
est comme ceci:la source
color
propriétés, etc. D'autres solutions sont des solutions de contournement ou des animations de "fondu".Alternativement, si vous ne voulez pas une transition progressive entre afficher et masquer (par exemple un curseur de texte clignotant), vous pouvez utiliser quelque chose comme:
Tout
1s
.cursor
ira devisible
àhidden
.Si l'animation CSS n'est pas prise en charge (par exemple dans certaines versions de Safari), vous pouvez revenir à cet intervalle JS simple:
Ce simple JavaScript est en fait très rapide et dans de nombreux cas peut même être un meilleur défaut que le CSS. Il convient de noter que ce sont de nombreux appels DOM qui ralentissent les animations JS (par exemple $ .animate () de JQuery).
Il a également le deuxième avantage que si vous ajoutez des
.cursor
éléments plus tard, ils animeront toujours exactement en même temps que les autres.cursor
puisque l'état est partagé, c'est impossible avec CSS pour autant que je sache.la source
Je ne sais pas pourquoi, mais l'animation uniquement de la
visibility
propriété ne fonctionne sur aucun navigateur.Ce que vous pouvez faire, c'est animer la
opacity
propriété de telle sorte que le navigateur ne dispose pas de suffisamment d'images pour faire apparaître ou masquer le texte.Exemple:
la source
step-start
(voir ma réponse).Modifiez la durée et l'opacité en fonction de vos besoins.
la source
Afficher l'extrait de code
la source
En retard, mais je voulais en ajouter une nouvelle avec plus d'images clés ... voici un exemple sur CodePen car il y avait un problème avec les extraits de code intégrés:
la source
la source
Cela fonctionne pour moi en utilisant class = blink pour les éléments respectifs
Code JS simple
la source