Я знаю, это не совсем решение вашего вопроса, потому что вы просите
дисплей + непрозрачность
Мой подход решает более общий вопрос, но, возможно, это была фоновая проблема, которую следует решить, используя display
в сочетании с opacity
.
Моим желанием было убрать элемент с дороги, когда он не виден. Это решение делает именно это: оно перемещает элемент за пределы, и это можно использовать для перехода:
.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;
}
Этот код не содержит никаких префиксов браузера или хаков обратной совместимости. Он просто иллюстрирует концепцию того, как элемент удаляется, поскольку он больше не нужен.
Интересная часть - это два разных определения перехода. Когда указатель мыши наведен на .parent
элемент, его .child
нужно сразу поставить на место, а затем его прозрачность изменится:
transition: left 0s, visibility 0s, opacity 0.8s;
Когда нет зависания или указатель мыши был перемещен с элемента, нужно дождаться завершения изменения непрозрачности, прежде чем элемент можно будет переместить за пределы экрана:
transition: left 0s 0.8s, visibility 0s 0.8s, opacity 0.8s;
Перемещение объекта будет жизнеспособной альтернативой в случае, если настройка display:none
не нарушит макет.
Надеюсь, я попал в точку в этом вопросе, хотя и не ответил на него.