Tengo un proyecto heredado y hay lugares donde es un completo desastre. Este es uno de ellos. Necesito apuntar solo a IE (cualquier versión).
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Para ser claros: dentro de la hoja de estilo incrustada y sin agregar ID o clases a las etiquetas en el html, necesito aplicar el estilo de borde solo si el usuario está usando IE. ¿Cómo puedo hacer esto?
Editar: encontré una solución para Firefox, pregunta de edición para reflejar esto.
Respuestas:
Internet Explorer 9 y versiones anteriores : puede usar comentarios condicionales para cargar una hoja de estilo específica de IE para cualquier versión (o combinación de versiones) a la que desee apuntar específicamente, como a continuación, usando una hoja de estilo externa.
Sin embargo, a partir de la versión 10, los comentarios condicionales ya no son compatibles con IE.
Internet Explorer 10 y 11: cree una consulta de medios usando -ms-high-contrast, en la que coloca sus estilos CSS específicos de IE 10 y 11. Dado que -ms-high-contrast es específico de Microsoft (y solo está disponible en IE 10+), solo se analizará en Internet Explorer 10 y versiones posteriores.
Microsoft Edge 12: puede usar la regla @supports Aquí hay un enlace con toda la información sobre esta regla
Detección de la regla IE8 en línea
Tengo 1 opción más, pero solo es detectar IE8 y la versión inferior.
Como especificó para la hoja de estilo incrustada. Creo que debe usar la consulta de medios y el comentario de condición para la versión siguiente.
fuente
-ms-high-contrast:active
afecta a Edge si el sistema está en modo de alto contraste.@supports
solución es realmente excelente: la detección de funciones es el camino a seguir. Estaba dispuesto a apuntar a Edge debido a su falta de soporte dewidth: max-content
: lo@supports not (width: max-content)
hace perfectamente, y será muy ignorado cuando Edge termine de apoyarlo. (Debería suceder en el otoño de 2019, ya que luego debería cambiar a Chromium para renderizar).Aquí hay una colección de consultas de medios que le permitirán hacer eso para cualquier versión de Internet Explorer (desde IE6 a IE11 +), Firefox, Chrome y Safari (EDITAR: también se agregó Opera).
IE 6
o
IE 7
o
IE 6 y 7
o
o
IE 6, 7 y 8
IE 8
o
Modo de estándares IE 8
IE 8,9 y 10
Solo IE 9
IE 9 y superior
IE 9 y 10
Solo IE 10
IE 10 y superior
o
IE 11 (y superior ..)
Firefox (cualquier versión)
Firefox (solo Quantum / Stylo)
Firefox Legacy (pre-Stylo)
Webkit (Chrome y Safari, cualquier versión)
Google Chrome (29+)
Safari (7.1+)
Safari (de 6.1 a 10.0)
Safari (10.1+)
Opera (12+)
Opera (11 y menor)
Para obtener más información o consultas de medios adicionales, visite el sitio web browserhacks.com y / o consulte esta publicación de blog que escribí sobre este tema.
fuente
Cuando uso
SASS
, uso los siguientes 2@media queries
para apuntar a IE 6-10 y EDGE.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
Editar
También apunto a versiones posteriores de EDGE usando
@support queries
(agregue tantas como necesite)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
fuente
Para apuntar a IE solo en mis hojas de estilo, uso este Sass Mixin:
fuente
Otra solución de trabajo para el estilo específico de IE es
Y luego tu selector
fuente
Después de experimentar problemas con los sitios que se rompen en Edge cuando usa el Modo de alto contraste, me encontré con el siguiente trabajo de Jeff Clayton:
https://browserstrangeness.github.io/css_hacks.html
Es una consulta de medios extraña y extraña, pero son más fáciles de usar en Sass:
Esto apunta a las versiones de IE que se esperan para IE8.
O puedes usar:
Que apunta a IE8-11, pero también activa FireFox 1.x (que para mi caso de uso, no importa).
En este momento estoy probando con soporte de impresión, y esto parece estar funcionando bien:
fuente