Я знаю, это не совсем решение вашего вопроса, потому что вы просите
дисплей + непрозрачность
Мой подход решает более общий вопрос, но, возможно, это была фоновая проблема, которую следует решить, используя 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не нарушит макет.
Надеюсь, я попал в точку в этом вопросе, хотя и не ответил на него.