10

Tengo un/jQuery Casilla guión de estilo CSS: http://jsfiddle.net/BwaCD/¿Cómo puedo establecer CSS solo para navegadores IE específicos?

El problema es que en los navegadores actuales para que el lapso de flotar sobre la entrada, la posición de la entrada debe ser absoluta. Pero en IE8 & a continuación, la secuencia de comandos no funcionará y, por lo tanto, me queda una entrada absolutamente posicionada que flota sobre otros elementos. No estoy pidiendo que el script funcione en IE8 & a continuación.

Quiero saber cómo puedo usar CSS para establecer un estilo específico si es IE8 o inferior. Supongo que jQuery sería aceptable si fuera necesario, pero no creo que sea así. Sé que esto se puede hacer solo con CSS & HTML. No sé cómo.

Respuesta

10
+0

En segundo lugar no funcionaba ... primero lo hizo. – henryaaron

+0

Wow. Gracias. Solo quiero preguntar sin embargo, ¿son estos hacks seguros en absoluto? –

+0

¡Hack son malos, siempre! Sugiero usar la solución de mi primer enlace, pero si realmente debe usar hacks, encontré este sitio web: http://browserhacks.com/ - es bueno saber que estas cosas existen y funcionan como se desea, pero realmente no debería usarlo – Adaz

15

comentarios condicionales trabajarían (<!--[if lte IE 8]><stylesheet><![endif]-->), pero si quiere hacerlo todo en la hoja de estilo, hay is a way :

body { 
    color: red; /* all browsers, of course */ 
    color: green\9; /* IE only */ 
} 

Lo importante aquí es el "\ 9", que tiene que ser exactamente "\ 9". No tengo claro exactamente por qué es esto.

EDITAR: El \ 9 truco no es suficiente por sí mismo. Para excluir IE9, también es necesario el :root hack:

:root body { 
    color: red\9; /* IE9 only */ 
} 

Otros navegadores IE además podrían apoyar :root, por lo que combinarlo con el \ 9 truco si usted lo está utilizando para apuntar IE9.

+0

Esto '\ 9' por alguna razón no funciona ... – henryaaron

+0

Parece que el \ 9 se dirige realmente a todas las versiones de IE, no solo a 8 y menos. http://mathiasbynens.be/notes/safe-css-hacks#css-hacks – Brilliand

+0

\ 9 funciona muy bien, y como MS eliminó los comentarios condicionales a partir de IE10, esta parece ser la única solución libre de js para IE de destino solamente. ¡Gracias! – f055

3

Puede utilizar comentarios condicionales de Internet Explorer para agregar un nombre de clase de la etiqueta raíz HTML para más viejos navegadores IE:

<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]--> 
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]--> 
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 

Entonces se puede definir CSS IE-específica haciendo referencia al nombre de la clase apropiada, como esto:

.ie8 body { 
    /* Will apply only to IE8 */ 
} 

Fuente: http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

2

objetivo todas las versiones de IE:

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

Target todo EXCEPTO IE

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

Objetivo IE 7 sólo

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

Objetivo IE 6 SOLAMENTE

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

Objetivo IE 5 SOLAMENTE

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

Target IE 5.5 SOLAMENTE

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

Target IE 6 y LOWER

<!--[if lt IE 7]> 
    <link rel="stylesheet" type="text/css" href="ie6-and-down.css" /> 
<![endif]--> 

<!--[if lte IE 6]> 
    <link rel="stylesheet" type="text/css" href="ie6-and-down.css" /> 
<![endif]--> 

Target IE 7 y LOWER

<!--[if lt IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie7-and-down.css" /> 
<![endif]--> 

<!--[if lte IE 7]> 
    <link rel="stylesheet" type="text/css" href="ie7-and-down.css" /> 
<![endif]--> 

Target IE 8 y LOWER

<!--[if lt IE 9]> 
    <link rel="stylesheet" type="text/css" href="ie8-and-down.css" /> 
<![endif]--> 
<!--[if lte IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie8-and-down.css" /> 
<![endif]--> 

Target IE 6 y superior

<!--[if gt IE 5.5]> 
    <link rel="stylesheet" type="text/css" href="ie6-and-up.css" /> 
<![endif]--> 
<!--[if gte IE 6]> 
    <link rel="stylesheet" type="text/css" href="ie6-and-up.css" /> 
<![endif]--> 

Target IE 7 y superior

<!--[if gt IE 6]> 
    <link rel="stylesheet" type="text/css" href="ie7-and-up.css" /> 
<![endif]--> 
<!--[if gte IE 7]> 
    <link rel="stylesheet" type="text/css" href="ie7-and-up.css" /> 
<![endif]--> 

Target IE 8 y superior

<!--[if gt IE 7]> 
    <link rel="stylesheet" type="text/css" href="ie8-and-up.css" /> 
<![endif]--> 
<!--[if gte IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie8-and-up.css" /> 
<![endif]--> 
1

tengo una solución útil para IE 10 y 11. El script comprueba IE y la versión y luego agrega .ie10 o .ie11 clase a la etiqueta.

De esa manera usted puede escribir reglas específicas como .ie10 .something {} y conseguir aplicar sólo cuando el navegador es decir, 10 o 11.

Compruébelo usted mismo, que es útil para la degradación elegante, probado en unos pocos sitios comerciales y no realmente hacky: http://marxo.me/target-ie-in-css

0

He resuelto de esta manera a que el cursor de agarre en el Internet Explorer:

.grab_cursor { 
    cursor: grab; 
    cursor: -moz-grab; 
    cursor: -webkit-grab; 
    cursor: url('../img/cursors/openhand.cur'), url('img/cursors/openhand.cur'), n-resize; /* standard: note the different path for the .cur file */ 
    cursor: url('img/cursors/openhand.cur'), n-resize\9; /* IE 8 and below */ 
    *cursor: url('img/cursors/openhand.cur'), n-resize; /* IE 7 and below */ 
    _cursor: url('img/cursors/openhand.cur'), n-resize; /* IE 6 */ 
} 

En Internet Explorer para Windows hasta e incluyendo la versión 8, si se especifica un valor URI relativo en un estilo externa archivo de hoja El URI base se considera el URI del documento que contiene el elemento y no el URI de la hoja de estilo en la que aparece la declaración .

los archivos del árbol:

index.html 
css/style.css -> here the posted code 
img/cursors/openhand.cur 

Buenas referencias:

Cuestiones relacionadas