Wiem, że to naprawdę nie jest rozwiązanie na twoje pytanie, ponieważ o to prosisz
wyświetlanie + krycie
Moje podejście rozwiązuje bardziej ogólne pytanie, ale być może był to problem tła, który należy rozwiązać, używając displayw połączeniu zopacity .
Moim pragnieniem było usunięcie elementu z drogi, gdy nie jest widoczny. To rozwiązanie robi dokładnie to: przenosi element z daleka i można go użyć do przejścia:
.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;
}
Ten kod nie zawiera żadnych przedrostków przeglądarek ani hacków dotyczących wstecznej zgodności. Po prostu ilustruje koncepcję, w jaki sposób element jest odsunięty, ponieważ nie jest już potrzebny.
Ciekawą częścią są dwie różne definicje przejść. Gdy wskaźnik myszy najedzie na .parentelement, .childelement należy natychmiast umieścić na miejscu, a wtedy krycie zostanie zmienione:
transition: left 0s, visibility 0s, opacity 0.8s;
Gdy nie ma najechania kursorem lub wskaźnik myszy został odsunięty od elementu, należy poczekać, aż zakończy się zmiana krycia, zanim element będzie można przenieść poza ekran:
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
Przeniesienie obiektu będzie realną alternatywą w przypadku, gdy ustawienie display:nonenie zakłóci układu.
Mam nadzieję, że trafiłem w sedno za to pytanie, chociaż nie odpowiedziałem.