La visibilidad es una propiedad animable según la especificación, pero las transiciones en la visibilidad no funcionan gradualmente, como cabría esperar. En cambio, las transiciones en la visibilidad retrasan la ocultación de un elemento. Por otro lado, hacer visible un elemento funciona de inmediato. Esto es como está definido por la especificación (en el caso de la función de temporización predeterminada) y como está implementado en los navegadores.
Este también es un comportamiento útil, ya que de hecho uno puede imaginar varios efectos visuales para ocultar un elemento. La atenuación de un elemento es solo un tipo de efecto visual que se especifica mediante la opacidad. Otros efectos visuales pueden alejar el elemento usando, por ejemplo, la propiedad transform, ver también http://taccgl.org/blog/css-transition-visibility.html
¡A menudo es útil combinar la transición de opacidad con una transición de visibilidad! Aunque la opacidad parece hacer lo correcto, los elementos completamente transparentes (con opacidad: 0) aún reciben eventos del mouse. Por ejemplo, los enlaces de un elemento que se desvaneció con una transición de opacidad sola, aún responden a los clics (aunque no son visibles) y los enlaces detrás del elemento atenuado no funcionan (aunque son visibles a través del elemento atenuado). Consulte http://taccgl.org/blog/css-transition-opacity-for-fade-effects.html .
Este comportamiento extraño se puede evitar simplemente usando ambas transiciones, la transición en visibilidad y la transición en opacidad. Por lo tanto, la propiedad de visibilidad se usa para deshabilitar los eventos del mouse para el elemento mientras que la opacidad se usa para el efecto visual. Sin embargo, se debe tener cuidado de no ocultar el elemento mientras se reproduce el efecto visual, que de otro modo no sería visible. Aquí la semántica especial de la transición de visibilidad se vuelve útil. Al ocultar un elemento, el elemento permanece visible mientras se reproduce el efecto visual y luego se oculta. Por otro lado, al revelar un elemento, la transición de visibilidad hace que el elemento sea visible inmediatamente, es decir, antes de reproducir el efecto visual.
opacity
puede tomar varios valores entre0
y1
, mientras quevisibility
puede ser solovisible
ohidden
(sin valores intermedios)