Foros del Web » Creando para Internet » CSS »

Transformaciones después de un display block.

Estas en el tema de Transformaciones después de un display block. en el foro de CSS en Foros del Web. A ver si me pueden ayudar. Estoy jugando con transformaciones que arranquen después de aparecer un objeto al pasar encima de un link. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 26/06/2013, 23:34
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Transformaciones después de un display block.

A ver si me pueden ayudar. Estoy jugando con transformaciones que arranquen después de aparecer un objeto al pasar encima de un link.

Código HTML:
Ver original
  1. .aparece {
  2.     background: transparent;
  3.     width: 500px;
  4.     height: 500px;    
  5. /*    display: none; */
  6.     opacity: 0;
  7.     transition-property: opacity;
  8.     transition-duration: 1s;
  9.     -webkit-transition-property: opacity;
  10.     -webkit-transition-duration: 1s;
  11. transition-delay: .5s;}
  12.  
  13. a:hover div.aparece {
  14.     background-color: Red;
  15.     display: block;
  16.     opacity: .8;}
  17.  
  18.  
  19. <a href="#">Aparece <div class="aparece">Aqui estoy</div></a>

Al pasar el mouse encima del texto Aparece, la opacidad cambia.

Pero el problema es que de inicio lo necesito con display: none (quitar el comentario) y entonces no funciona el efecto transición.


¿Alguna idea?

Última edición por Rafael; 26/06/2013 a las 23:47
  #2 (permalink)  
Antiguo 26/06/2013, 23:53
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Transformaciones después de un display block.

¿Será muy tonto ponerle width: 0px y height: 0px en lugar de desaparecerlo de inicio?

Edito: No es tan mala idea. Puse al contenedor

height: 0; y overflow: hidden;
y luego simplemente overflow: visible;

Pero a ver si se les ocurre alguna otra alternativa.

Última edición por Rafael; 27/06/2013 a las 00:05
  #3 (permalink)  
Antiguo 27/06/2013, 00:08
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Transformaciones después de un display block.

No sé si te valdrá, pero para los menus lo que suele hacerse es usar visibility, posiciones relativas y absolutas y trastear un poco con el delay:

Código CSS:
Ver original
  1. a {
  2.   position: relative;
  3. }
  4.  
  5. .aparece {
  6.   position: absolute;
  7.   visibility: hidden;
  8.   width: 500px;
  9.   height: 500px;
  10.   opacity: 0;
  11.   transition: visibility 0 linear 1s, opacity 1s;
  12.   /*
  13.   O ansina:
  14.   transition-property: visibility, opacity;
  15.   transition-duration: 0, 1s;
  16.   transition-delay: 1s, 0;
  17.   */
  18. }
  19.  
  20. a:hover div.aparece {
  21.   visibility: visible;
  22.   background-color: Red;
  23.   opacity: .8;
  24.   transition-delay: 0;
  25. }
  #4 (permalink)  
Antiguo 27/06/2013, 00:14
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Transformaciones después de un display block.

Pero ¿visibility no ocupa espacio?
Se anula esto con el position absolute, ¿cierto?
  #5 (permalink)  
Antiguo 27/06/2013, 00:24
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Transformaciones después de un display block.

Si exacto. Por eso te decía que suele usarse en menús y no sé si te serviría porque igual necesitas que div.aparece siga en el flujo natural.

Se me ocurre que si quieres que siga manteniendo el espacio pero que no sea afectado por el :hover, podrías ponerlo como hermano y luego usar el selector de "hermano directo": ~. Es como el selector +, que afecta a hermanos —descendientes siempre—pero sólo si viene justo a continuación.

Código HTML:
Ver original
  1. <a href="#">Aparece</a>
  2. <div class="aparece">Aqui estoy</div>

Código CSS:
Ver original
  1. a:hover ~ div.aparece {}

Lo demás sería igual, pero eliminando el posicionado.
  #6 (permalink)  
Antiguo 27/06/2013, 00:35
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Transformaciones después de un display block.

En realidad acabo de decir una tontería ¿no? Si pensabas ocultarlo es que no querías que ocupara espacio, obviamente.

Entonces tal vez, en lugar de hacerlo mediante height como decías, hacerlo tal cual en #3, y cambiar la posición en el :hover a relativa.

Supongo que depende mucho del contexto en el que quieras usarlo.
  #7 (permalink)  
Antiguo 27/06/2013, 01:11
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Transformaciones después de un display block.

Fijate que sí probé el visibility hidden + position abolute

Como que me imaginaba que iba a quedar por ahí encima de alguien, pero sí funcionó.

Thx.

Etiquetas: color, display, hover
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:47.