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 display
w 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 .parent
element, .child
element 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:none
nie zakłóci układu.
Mam nadzieję, że trafiłem w sedno za to pytanie, chociaż nie odpowiedziałem.