Foros del Web » Programando para Internet » Javascript »

Estilos CSS se heredan con cambio de clase [IE]

Estas en el tema de Estilos CSS se heredan con cambio de clase [IE] en el foro de Javascript en Foros del Web. Saludos, estoy creando un slideShow de noticas, hasta el momento todo marcha muy bien, solo hay un relativamente pequeño problema: 1. Tengo un DIV con ...
  #1 (permalink)  
Antiguo 11/03/2009, 01:15
Avatar de jeybi  
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 15 años, 9 meses
Puntos: 10
Estilos CSS se heredan con cambio de clase [IE]

Saludos, estoy creando un slideShow de noticas, hasta el momento todo marcha muy bien, solo hay un relativamente pequeño problema:

1. Tengo un DIV con clase JSNOACTIVO
2. Al terminar de cargar la pagina (onload) mi Script.js cambia la clase de el DIV por JSACTIVO

Lo que busco con esto, como se puede deducir, es una version accesible cuando no haya javascript, utilizando CSS.

En firefox, opera, safari, todo anda bien, me cambia la clase y carga los estilos correspondientes al java script activo. Sin embargo, el IE6/7 al cambiar la clase a JSACTIVO, de alguna manera 'hereda' los estilos de JSNOACTIVO y se me combinan con los de JSACTIVO, la clase JSNOACTIVO se aplica mientras el ONLOAD no se ejecuta (1-2 segundos).

En teoria lo que deberia pasar seria, en el cambio de clase, desechar todos los estilos definidos para JSNOACTIVO, y cargar los estilos JSACTIVO, cosa que pasa en todos los demas navegadores.

He probado que cambiando la clase del DIV directamente (en el HTML) a JSACTIVO el IE, debido a que en ningun momento carga los estilos de JSINACTIVO, muestra todo correctamente.

Esto me llevo a la terrible conclusion de que IE no desecha todos los estilos a la hora de un refresco de la pagina. O bien puede que mi hoja de estilos no este correcta, cosa que estoy 99% seguro que no.


En fin, queria saber si a alguien le ha pasado este problema y que medidas tomo al respecto. Algo que se me ocurre es que en la clase JSACTIVO defina reglas por cada regla que hay en JSINACTIVO, anulando asi, la 'herencia'.

PD: Casi me olvido del link, esto es lo que llevo programado:
http://kazibi.x10hosting.com/Alpool/...lide_show.html

Pueden checarlo con JS activo e inactivo, el inactivo no funciona en IE6, solo IE7, aun tengo que hacer una hoja de estilos para esa version.


Saludos!
  #2 (permalink)  
Antiguo 11/03/2009, 08:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

¿No será mejor usar el tag <noscript> en este caso para mostrar el contenido que quieres si Javascript está desactivado?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/03/2009, 12:51
Avatar de jeybi  
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Vaya, gracias!

Probe dividiendo mi hoja en 2 y añadidiendo JSINACTIVO en una etiqueta noscript y me fue perfecto. No sabia que se podia hacer eso con las hojas de estilos.

El codigo me quedo asi:

Código html:
Ver original
  1. <script type="text/javascript">
  2. document.write('<link rel="stylesheet" type="text/css" href="css/slides.css"/>');
  3. <noscript><link rel="stylesheet" type="text/css" href="css/nocssSlides.css"/></noscript>

Todo perfecto, carga una cuando JS activo y otra cuando No activo. Ahora creo que esto a de ser un problema del dia a dia, hay alguna forma mejor para hacer eso de una mejor manera? Realmente el codigo quedo asi:
Código html:
Ver original
  1. <script src="js/slide_show.js"></script>
  2. <noscript><link rel="stylesheet" type="text/css" href="css/nocssSlides.css"/></noscript>
Con el document.write en el script, como sea, me interesa saber que alternativas hay.
  #4 (permalink)  
Antiguo 11/03/2009, 13:59
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Esta sería otra opción, pero me parece mejor usar noscript:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>test</title>
<
link href="rojo.css" rel="stylesheet" type="text/css" />
<
link id="noJS" href="negro.css" rel="stylesheet" type="text/css" />
<
script>
onload=function(){
    
document.getElementById('noJS').disabled=1;
}
</script>
</head>

<body>
</body>
</html> 
Si no hay javascript, la segunda hoja de estilos sobreescribe la primera. Si hay javascript, la segunda es deshabilitada y sólo queda activa la primera (igual, mejor usar noscript).
  #5 (permalink)  
Antiguo 11/03/2009, 17:15
Avatar de jeybi  
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Uhm ok, dejare el noscript, pero no hay forma de que me valide?

Esta prohibido insertar una etiqueta link dentro de una noscript, mas aun poner el noscript en el head, esto ultimo con cambiarlo de lugar basta. Que codigo utilizan ustedes habitualmente? Cargan diferentes hojas o diferentes markups?
  #6 (permalink)  
Antiguo 12/03/2009, 15:30
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Cita:
Esta prohibido insertar una etiqueta link dentro de una noscript
no esta prohibido, esta desaconsejado por el consorcio w3c. no tiene potestad para prohibir nada, al final de cuentas son los navegadores los que deciden.
  #7 (permalink)  
Antiguo 12/03/2009, 16:44
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Tampoco es que esté desaconsejado. Es que, según la definición que estás poniendo tú mismo al decir que usas el DTD de XHTML 1.0 Transitional, no debe ir ahí. Si tú mismo dices "trata este documento así, con estas normas" y luego no cumples esas normas, entonces ni prohibiciones ni consejos, simplemente intentas que el navegador adivine tus pensamientos.
  #8 (permalink)  
Antiguo 12/03/2009, 20:48
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Estilos CSS se heredan con cambio de clase [IE]

Bueno ,diferentes opiniones. que no valide al estandar w3c no es que no se vea la pagina, los navegadores no adivinan el pensamiento, hasta ahi podiamos llegar ,pero tampoco son cuadrados, y saben interpretar lo que les ordenas siempre que tenga un sentido para ellos, por supuesto. Los estandares son para poner los libros... ¿o eso son los estantes?
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 12:36.