Видимість - це анімаційна властивість відповідно до специфікації, але переходи щодо видимості не працюють поступово, як можна було очікувати. Натомість переходи затримки видимості приховують елемент. З іншого боку, зробити елемент видимим працює негайно. Це так, як це визначено специфікацією (у випадку функції за замовчуванням за замовчуванням) і як вона реалізована в браузерах.
Це також є корисною поведінкою, оскільки насправді можна уявити різні візуальні ефекти, щоб приховати елемент. Вицвітання елемента - це лише один вид візуального ефекту, який задається за допомогою непрозорості. Інші візуальні ефекти можуть перемістити елемент за допомогою, наприклад, властивості трансформації, також див. Http://taccgl.org/blog/css-transition-visibility.html
Часто корисно поєднувати перехід непрозорості з переходом видимості! Хоча непрозорість, здається, робить все правильно, повністю прозорі елементи (з непрозорістю: 0) все ще отримують події миші. Так, наприклад, посилання на елемент, який вицвів лише з переходом непрозорості, все ще реагують на клацання (хоча вони і не видно), а посилання за згасаючим елементом не працюють (хоча видно через згасаний елемент). Дивіться http://taccgl.org/blog/css-transition-opacity-for-fade-effects.html .
Цього дивного поведінки можна уникнути, використовуючи обидва переходи, перехід на видимість і перехід на непрозорість. Тим самим властивість видимості використовується для відключення подій миші для елемента, тоді як непрозорість використовується для візуального ефекту. Однак слід подбати про те, щоб не заховати елемент під час відтворення візуального ефекту, який інакше не був би видно. Тут стає в нагоді особлива семантика переходу видимості. Приховуючи елемент, елемент залишається видимим під час відтворення візуального ефекту і прихований після цього. З іншого боку, при виявленні елемента перехід видимості робить елемент видимим негайно, тобто перед відтворенням візуального ефекту.
opacity
може приймати кілька значень між0
і1
, хочаvisibility
може бути лишеvisible
абоhidden
(проміжних значень немає)