Je sais, ce n'est pas vraiment une solution à votre question, car vous demandez
affichage + opacité
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 avec opacity
.
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:
.child {
left: -2000px;
opacity: 0;
visibility: hidden;
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
}
.parent:hover .child {
left: 0;
opacity: 1;
visibility: visible;
transition: left 0s, visibility 0s, opacity 0.8s;
}
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:
transition: left 0s, visibility 0s, opacity 0.8s;
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:
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
É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.