J'ai un problème avec une animation CSS3.
.child {
opacity: 0;
display: none;
-webkit-transition: opacity 0.5s ease-in-out;
-moz-transition: opacity 0.5s ease-in-out;
transition: opacity 0.5s ease-in-out;
}
.parent:hover .child {
opacity: 0.9;
display: block;
}
Ce code ne fonctionne que si je supprime le changement de display
.
Je souhaite changer l'affichage juste après le survol, mais l'opacité doit être modifiée à l'aide de la transition.
Réponses:
Basé sur la réponse de Michaels, il s'agit du code CSS réel à utiliser
la source
Vous pouvez faire avec des animations CSS:
la source
Si possible, utilisez à la
visibility
place dedisplay
Par exemple:
la source
Cette solution de contournement fonctionne:
définir une «image clé»:
Utilisez cette «image clé» en «survol»:
la source
J'ai utilisé cela pour y parvenir. Ils s'estompent en vol stationnaire mais ne prennent pas de place lorsqu'ils sont cachés, parfait!
la source
J'ai un peu changé mais le résultat est magnifique.
Merci tout le monde.
la source
visibility: hidden;
à .child / au survolvisibility:visible;
et cela devrait résoudre le problème du lecteur d'écranIl existe une autre bonne méthode pour y parvenir en utilisant des événements de pointeur:
Malheureusement, cela n'est pas pris en charge dans IE10 et les versions antérieures.
la source
J'ai eu le même problème. J'ai essayé d'utiliser des animations au lieu de transitions - comme suggéré par @MichaelMullany et @Chris - mais cela ne fonctionnait que pour les navigateurs webkit même si je copiais-collé avec les préfixes "-moz" et "-o".
J'ai pu contourner le problème en utilisant
visibility
au lieu dedisplay
. Cela fonctionne pour moi car mon élément enfant l'estposition: absolute
, donc le flux de documents n'est pas affecté. Cela pourrait aussi fonctionner pour d'autres.Voici à quoi ressemblerait le code d'origine en utilisant ma solution:
la source
Si vous déclenchez le changement avec JS, disons en cliquant, il existe une belle solution de contournement.
Vous voyez que le problème se produit parce que l'animation est ignorée à l'affichage: aucun élément mais le navigateur applique toutes les modifications à la fois et l'élément n'est jamais affiché: bloc tant qu'il n'est pas animé en même temps.
L'astuce consiste à demander au navigateur de rendre l'image après avoir changé la visibilité mais avant de déclencher l'animation.
Voici un exemple JQuery:
la source
Sur les éléments absolus ou fixes, vous pouvez également utiliser z-index:
Les autres éléments devraient avoir un z-index entre -100 et 100 maintenant.
la source
type=password
champs. Ce n'est pas visible.Je sais, ce n'est pas vraiment une solution à votre question, car vous demandez
Mon approche résout une question plus générale, mais c'est peut-être le problème d'arrière-plan qui devrait être résolu en utilisant
display
en combinaison avecopacity
.Mon désir était d'éloigner l'élément lorsqu'il n'est pas visible. Cette solution fait exactement cela: elle déplace l'élément hors de l'extérieur, et cela peut être utilisé pour la transition:
Ce code ne contient aucun préfixe de navigateur ou hacks de compatibilité descendante. Il illustre simplement le concept de la façon dont l'élément est éloigné car il n'est plus nécessaire.
La partie intéressante sont les deux définitions de transition différentes. Lorsque le pointeur de la souris survole l'
.parent
élément, l'.child
élément doit être mis en place immédiatement, puis l'opacité sera modifiée:Lorsqu'il n'y a pas de survol ou que le pointeur de la souris a été déplacé de l'élément, il faut attendre que le changement d'opacité soit terminé avant que l'élément puisse être déplacé hors de l'écran:
Éloigner l'objet sera une alternative viable dans le cas où le réglage
display:none
ne casserait pas la mise en page.J'espère avoir frappé dans le mille pour cette question même si je n'y ai pas répondu.
la source
Une chose que j'ai faite a été de définir la marge de l'état initial comme étant quelque chose comme "margin-left: -9999px" afin qu'elle n'apparaisse pas à l'écran, puis réinitialiser "margin-left: 0" sur l'état de survol. Gardez-le "display: block" dans ce cas. A fait l'affaire pour moi :)
Modifier: enregistrer l'état et ne pas revenir à l'état de survol précédent? Ok ici, nous avons besoin de JS:
la source
Pour avoir une animation dans les deux sens onHoverIn / Out, j'ai fait cette solution. J'espère que cela aidera quelqu'un
la source
COMMENT ANIMER L'OPACITÉ AVEC CSS: voici
mon code:
le code CSS
ou consultez ce fichier de démonstration
la source
display
propriété a simplement été supprimée.display:
n'est pas transposable. Vous devrez probablement utiliser jQuery pour faire ce que vous voulez faire.la source