Respuesta

20

Desde IE6 se limita esencialmente a:

  • selectores de clase
  • selectores de ID
  • (espacio) selectores de descendientes
  • a: -sólo pseudo-selectores

su único las opciones son:

  • uso más clases para identificar sus elementos
  • uso de JavaScript (fuertemente no recomienda, excepto en casos muy especializados)

Me resulta muy útil para tomar ventaja de la capacidad de asignar múltiples clases a una elemento al separarlos con un espacio: class="foo bar"

+0

es html válido? – Ngm

+1

@ngm no, las especificaciones de atributos duplicados no están permitidas –

+2

@ngm; no obstante, puede utilizar class = "foo bar" – Dels

2

Usar clases, esa es la única solución, por desgracia.

+0

es valid html? – Ngm

+0

use class = "barra de botones" en su lugar –

+0

@ngm puede usar class = "foo bar" – Dels

26

Esto no es posible sin salpicar su HTML con una pila de selectores de clase extraños, por desgracia.

Recomiendo diseñar su sitio para que su CSS completamente válido funcione para las personas que usan navegadores modernos, y que todavía se puede utilizar en el IE6, aunque visualmente no del todo bien. Solo debe encontrar el equilibrio adecuado entre lograr que su sitio cumpla con los estándares y hacer lo imposible para los usuarios que no se actualizarán. Es un navegador roto, trátelo como tal.

+4

Me gusta esta respuesta +1 – alex

+1

Sí, esta es la manera adelante. Los desarrolladores deben dejar de intentar hacer las cosas perfectas en IE6. Por ejemplo, he configurado algunas columnas con el pseudo-selector: first-child para eliminar el margen izquierdo en la primera columna. Para IE6 acabo de hacer los márgenes más pequeños para que no se estropee. – DisgruntledGoat

+1

Es posible con expresiones CSS. Consulte http://stackoverflow.com/q/8231617/143739 – kzh

8

Si quiere atribuir selector en IE6, puede utilizar Dean Edward IE.js. http://dean.edwards.name/IE7/

que hará que IE 5+ se comportan más como IE7

 
supports the following CSS selectors: 
parent > child 
adjacent + sibling 
adjacent ~ sibling 
[attr], [attr="value"], [attr~="value"] etc 
.multiple.classes (fixes bug) 
:hover, :active, :focus (for all elements) 
:first-child, :last-child, only-child, nth-child, nth-last-child 
:checked, :disabled, :enabled 
:empty, :contains(), :not() 
:before/:after/content: 
:lang() 

No tenía IE6 (usar Internet Explorer 7), así que no puedo dicho funcionó, pero darle una oportunidad

+4

Esta es una buena opción, pero tenga en cuenta, (y esto no es por experiencia, sino por mirar el código y cómo implementa el soporte) que sus reglas de CSS no lo harán. se "aplicará" automáticamente a los cambios dinámicos en los elementos que suceden a través de JS: al agregar clases, elementos, etc. no se obtendrán las reglas de CSS originales. – Nicole

0

Si está utilizando jQuery en su sitio, otra opción es SuperSelectors - va a través de las hojas de estilo de su sitio, agregando clases dinámicamente a los elementos para que incluso IE6 pueda disfrutar del apoyo de selectores CSS como ul li:first-child li:nth-child(odd) a:hover.

6

Puede usar Internet Explorer expresiones CSS combinado con el subrayado de seguridad ("_", Internet Explorer 6 y anteriores) CSS Hack:

/* Adds dotted bottom border to `<ABBR>` with a `title` attribute. */ 
abbr { 
     _border-bottom: expression(this.title ? '1px dotted' : 'none'); 
} 

abbr[title] { 
     border-bottom: 1px dotted; 
} 

me entienden, que pediste CSS "válido", pero si el hack de CSS anterior te asusta, lee sobre Safe CSS Hacks.

Lo anterior podría ser cambiado a:

.ie6 abbr { 
     _border-bottom: expression(this.title ? '1px dotted' : 'none'); 
} 

abbr[title] { 
     border-bottom: 1px dotted; 
} 

Esto es, si el código HTML comenzó como:

<!--[if lt IE 7]><html class="ie6"><![endif]--> 
<!--[if IE 7]> <html class="ie7"><![endif]--> 
<!--[if IE 8]> <html class="ie8"><![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 
+0

+1 para la declaración de expresión(). ¡He estado construyendo sitios web y creando CSS durante 12 años y es la primera vez en mi vida que veo esta mierda genial! –

+1

No funciona en IE8. Finalmente lo eliminaron debido a problemas de seguridad, pero funciona en IE7. IE también tiene una cosa llamada "comportamientos" en CSS. – kzh

Cuestiones relacionadas