2012-07-28 17 views
24

Sé que se puede usar un comentario condicional IE dentro de HTML:usar el IE comentarios condicionales dentro de una hoja de estilo

<!--[if IE]> 
    <link href="ieOnlyStylesheet.css" /> 
<![endif]--> 

Pero lo que si quiero que lo hagan solo IE en un hoja de estilo, la creación de una regla CSS para un elemento específico dentro del html. Por ejemplo, se puede utilizar este Chrome/Safari hackear dentro del archivo css css código ...

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    .myClass{ 
     background: #fff; 
     background:rgba(255,0,255,0.7); 
    } 
} 

Pero el uso de la IE corte dentro de la hoja de estilo CSS como esto:

<!--[if IE]> 
     .myClass{ 
     background: #fff; 
     background:rgba(255,0,255,0.7); 
    } 
<![endif]--> 

hace no trabajo. ¿Qué debo usar dentro de una hoja de estilo para orientarme solo a IE?

+1

comentarios condicionales son 1) no es un truco 2) no es aplicable a CSS, sólo para HTML. – BoltClock

+0

gracias BoltClock, entonces veo –

Respuesta

23

Los comentarios condicionales no funcionan en las hojas de estilo. En su lugar, puede usar comentarios condicionales en su HTML para aplicar diferentes clases de CSS o ID a los elementos que luego puede orientar con CSS.

Por ejemplo:

<!--[if IE]> 
    <div id="wrapper" class="ie"> 
<![endif]--> 
<!--[if !IE]> 
    <div id="wrapper"> 
<![endif]--> 

También, hay herramientas como Modernizr que hacen la detección de características de una manera muy similar (mediante la adición de clases para el elemento <html>). Puede usarlo para mejorar progresivamente su diseño/script para navegadores más nuevos al tiempo que admite navegadores antiguos.

+0

Gracias, su código tiene sentido y se puede usar para hacer lo que me gustaría lograr ... –

+0

¿Cómo lo automatiza Modernizr? Por favor explique como solo sabía que Modernizr "detecta". –

+1

@ YannisDran, tiene razón, no se automatizará agregando la clase IE, sin embargo, hará que la detección de características, que luego puede orientar a través de CSS, sea similar. He actualizado la respuesta para ser más claro al respecto. –

4

No puede usar los comentarios condicionales de IE pero puede usar hacks. This page of CSS hacks explica los hacks de IE que puede usar (y más).

+0

Gracias, esto responde mi pregunta (por cierto, vi este artículo antes, normalmente investigo antes de publicar en Stack), pero solo tiene una solución en CSS para IE 7 y a continuación a saber: IE 6 y por debajo * html {} IE 7 y por debajo *: first-child + html {} * html {} IE 7 sólo *: first-child + html {} me gustaría una forma de apuntar a todos los navegadores IE con un hack in-CSS, pero parece que eso no es posible. –

2

no lo hace, sólo tiene que utilizar IE comentarios condicionales para cargar una hoja de estilo específica IE:

<!--[if IE]> 
    <link rel="stylesheet" type="text/css" href="path/to/stylesheet.css"></link> 
<![endif]--> 

Hay hacks CSS, pero tenga en cuenta que un hackear requiere el uso de un error de análisis (de algún tipo) para dirigir una regla CSS específica a un navegador. Es poco probable que se corrijan en parches posteriores a una encarnación particular de un navegador, pero se corregirán en versiones posteriores (por lo que IE 9 y 10 no se ven afectados por los hacks CSS que se dirigen a IE 6, o IE 5 para Mac. ..).

1

Lo que quiere hacer es darle un estilo a todo en su hoja de estilo como lo haría normalmente con cualquier otro navegador. DESPUÉS de importar la hoja de estilo normal a su página, entonces importará una hoja de estilo específica de IE con la instrucción condicional <!--[if IE]>.

Al seguir este método, se importan los estilos para todos los navegadores y luego utiliza sus estilos específicos de IE para anular los que no son compatibles, no se procesan correctamente o deben ajustarse para su uso en IE.

17

Puede ser más fácil de lo que Derek Hunziker dijo:

basta con incluir el código, ya que es:

<!DOCTYPE html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 
    <head> 

puede llegar a identificar fácilmente, por ejemplo, si desea orientar IE 8 y más bajo escriba:

.lt-ie9 body{css rule here;} 

y listo!

Saludos

2

IE hoja de estilo hacks

.Class { 
    color: green;  /* standard */ 
    color: green\9; /* IE 8 and below */ 
    *color: green;  /* IE 7 and below */ 
    color: green !ie; /* IE 7 and below */ 
    _color: green;  /* IE 6 */ 
} 
+13

No lo utilice los hacks anteriores. La información es engañosa y podría causarle más problemas de los que resuelven. Como ejemplo, el '\ 9' hack * no * se dirige a IE 8 y abajo. Afecta a IE 7, 8, 9 y 10. Por favor, ** no los use **. – Sampson

Cuestiones relacionadas