Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Fade out + Display:none

Estas en el tema de Fade out + Display:none en el foro de Javascript en Foros del Web. Tengo una página web con un script PHP, que incluye mensajes de error. El caso es que querría que al pulsar un botón que tiene ...
  #1 (permalink)  
Antiguo 28/02/2016, 07:52
 
Fecha de Ingreso: febrero-2016
Mensajes: 7
Antigüedad: 8 años, 2 meses
Puntos: 0
Fade out + Display:none

Tengo una página web con un script PHP, que incluye mensajes de error. El caso es que querría que al pulsar un botón que tiene interno hiciera un fade out (ese ya lo tengo) y por último cambiase el display por display:none. He intentado hacerlo pero el display none me aparece antes del fade out.

Estos són mis códigos

HTML:

Código HTML:
Ver original
  1. <div id="alert" style="width:500px;height:50px;background-color:red;opacity:1;-moz-opacity:1;filter:alpha(opacity:0);">
  2.   <button onclick="javascript:fade(2);">X</button>
  3. </div>
  4. <p>Texto que debería subir, ya que es el resto de la página</p>

Javascript:

Código Javascript:
Ver original
  1. function fade(inout) {
  2.  
  3.        switch(inout) {
  4.        
  5.               case 1:
  6.                      for(opacidad=0,tiempo=30; opacidad<=100; opacidad+=4,tiempo+=30) {
  7.  
  8. setTimeout("document.getElementById('alert').style.MozOpacity='"+opacidad/100+"'",tiempo);
  9.                      /*Este es el estándar*/       setTimeout("document.getElementById('alert').style.opacity='"+opacidad/100+"'",tiempo);
  10.                      /*Para kit KHTML de KDE */       setTimeout("document.getElementById('alert').style.KHTML='"+opacidad/100+"'",tiempo);
  11.                             /*Para internet Explorer*/
  12. setTimeout("document.getElementById('alert').style.filter='alpha(opacity="+opacidad+")'",tiempo);
  13.                      }
  14.                      
  15.               break;
  16.               case 2:
  17.                      for(opacidad=100,tiempo=30; opacidad>=0; opacidad-=4,tiempo+=30) {
  18.                             setTimeout("document.getElementById('alert').style.MozOpacity='"+opacidad/100+"'",tiempo);
  19.                             setTimeout("document.getElementById('alert').style.opacity='"+opacidad/100+"'",tiempo);
  20.                             setTimeout("document.getElementById('alert').style.KHTML='"+opacidad/100+"'",tiempo);
  21.                             setTimeout("document.getElementById('alert').style.filter='alpha(opacity="+opacidad+")'",tiempo);
  22.                      }
  23.                      
  24.               break;
  25.        }
  26.  
  27. }

Previsualización:

Clic [URL="http://jseditor.proyectosbds.com/welcome/46036/edit"]aquí[/URL]!

PD: Si alguien también me podría decir cómo hacer que subiera suavizado, estaría más que encantado.
  #2 (permalink)  
Antiguo 29/02/2016, 13:15
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Fade out + Display:none

en el fragmento que pasas no aparece ningún display none ni veo que funcione en el fiddle, por mucho que le des un valor 0 de opacidad, el elemento sigue estando en en flujo de página

if(opacidad==0){
display none
}else{
display anterior
}

algo de este estilo dentro del fade y fuera del switch quiza funcione
  #3 (permalink)  
Antiguo 02/03/2016, 03:19
 
Fecha de Ingreso: febrero-2016
Mensajes: 7
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Fade out + Display:none

Cita:
Iniciado por juanito1712 Ver Mensaje
en el fragmento que pasas no aparece ningún display none ni veo que funcione en el fiddle, por mucho que le des un valor 0 de opacidad, el elemento sigue estando en en flujo de página

if(opacidad==0){
display none
}else{
display anterior
}

algo de este estilo dentro del fade y fuera del switch quiza funcione
1. El "display:none;" no está porqué como no me funcionaba bien lo quité.
2. Ese codigo no me acaba de funcionar. Lo he probado en casi todos los puntos del script y no va.
  #4 (permalink)  
Antiguo 02/03/2016, 09:37
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Fade out + Display:none

vale, el problema lo tienes en que estas lanzando timeouts desde un for, entonces el for se ejecuta a la máxima velocidad posible y los timeouts quedan como en cola, para cuando el primer timeout se ejecuta, opacidad ya ha llegado al extremo opuesto.


https://jsfiddle.net/oLracp2v/3/

Etiquetas: css, html
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 02:42.