Supongo que todos sabemos lo difícil que puede resultar conseguir que nuestras páginas se vean bien en todos los navegadores, en múltiples ocasiones nos vemos forzados a usar fragmentos de código propietario, que rompen con la validación, para conseguir efectos sencillos en determinados navegadores (no miro para ninguno…).
Por suerte, tenemos a nuestra disposición diversos mecanismos para facilitarnos, en la medida de lo posible, la labor de obtener páginas compatibles con todos los navegadores y que validen contra los estándares web.
Uno de los problemas que nos solemos encontrar al probar las páginas en diferentes navegadores es la hoja de estilo propia de cada uno. Me explico, cada navegador dispone de una hoja de estilo “por defecto” que, lamentablemente, es diferente en todos ellos. De ahí las inconsistencias de diseño como, por ejemplo, el indentado de las listas (Safari y todos los navegadores basados en Gecko utilizan padding-left para indentar mientras que Internet Explorer utiliza margin-left).
Para evitar volvernos locos con los márgenes y el padding podemos incluir la siguiente regla en el CSS
* {
margin: 0;
padding: 0;
}
Así desaparecerá todo el padding y los márgenes por defecto y podremos dar un estilo homogeneo a la página para todos los navegadores, al menos en este aspecto.
Internet Explorer con sus “peculiaridades” nos obliga a adoptar soluciones drásticas para hacer que nuestras páginas se muestren correctamente, por ejemplo los problemas con los elementos flotados, los márgenes y el padding.
Ya lo comentabamos el otro día, cuando hablabamos del centrado de elementos verticalmente con CSS. El explorer no comprende los selectores de atributo y los ignora, lo que nos permite incluir en una sola hoja de estilo instrucciones para los navegadores conformes a los estándares e instrucciones para el explorer, sin recurrir a hacks (como el de anteponer un guión bajo “_” a las instrucciones que queramos que sólo sean interpretadas por el Explorer) con lo que, a pesar de ser una solución algo “sucia”, seguimos generando una hoja de estilo válida.
Por ejemplo:
.centrado {
position: absolute;
top: 50%;}
.centrado[class] {
display: table-cell;
vertical-align: middle;
text-align: center;
position: static;}
Por medio de los comentarios condicionales, que la misma Microsoft recomienda, podremos detectar el navegador del visitante y si este es Internet Explorer servirle una hoja de estilo que sea capaz de digerir o, en el peor de los casos, un javascript que nos permita suplir algun defecto.
Por ejemplo,
<!--[if IE]>
<link rel="stylesheet" href="explorer.css" />
<![endif]-->
Nos serviria para servir una hoja de estilo adicional para los usuarios de explorer.
Es posible concretar más con los comentarios condicionales, si os interesa profundizar un poco más podéis echar un vistazo al documento de Microsoft sobre los comentarios condicionales.
Los comentarios condicionales son la forma más adecuada de servir reglas de estilo específicas para Explorer, así no penalizamos a los usuarios del resto de navegadores con un incremento del peso de la página. Y, por supuesto, no rompemos con la validación aunque utilicemos filtros propietarios ya que estos permanecerán en la hoja de estilo “no estándar”.
Si te ha gustado este post no olvides suscribirte al feed para estar al tanto de las novedades
[...] Utilizando un comentario condicional averiguamos si el visitante utiliza alguna versión inferior a Explorer 7 [...]
[...] En aNieto2k se ha publicado hoy un enlace a un hack que nos ayudará a solucionar este problema, nada que no pudiésemos hacer ya con otros trucos de los que ya hemos hablado, no obstante es interesante y bastante limpio para ser un hack: Min-Height Fast Hack por Dustin Diaz [...]
[...] Artículos: Bitácora de Webmaster » Compatibilizar IE y MOZILLA Webmaster Libre » Creando un CSS compatible con todos los navegadores ¡y válido! « Anterior: Tiempo de lectura de un post Siguiente: Blogsome en castellano » [...]
[...] las 19:59 y está archivada en: Codigo, (x)HTML, CSS. Puedes dejar un comentario, o enviar un trackback desde tusitio. [...]
Feed RSS de los comentarios de este post.
El tema del css y la compatibilidad siempre da de que hablar, y aunque css es la forma mas limpia segura y normalizada de hacer las cosas, el html plano sigue siendo la mas compatible, ya llegara el dia que podamos abandonar por completo las tablas y usar solo css, mientras tanto a usar trucos como los aqui expuestos…
Un saludo
Buenas tardes.
Desde hace unos dias intento “diseñar” una web, con el programa Dreamweaver 8. El diseño es basado en css, a base de insertar distintas capas. Con la funcion F12, voy probando como va quedando la web. Pero comprobe que habia varios errores que no se solucionar. Los errores son del tipo -”El valor ‘101′ no está admitido por la propiedad CSS height [Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 6.0, Netscape Navigator 6.0, Netscape Navigator 7.0]“- y el codigo fuente correspondiente es:
#anuncios5 {
position:absolute;
left:804;
top:537px;
width:220;
height:101;
z-index:26;
visibility: visible;
}
Podrian indicarme el error y como corregirlo?.
Muchas gracias y un saludo
width:220px;
height:101px;
prueba .xD
Tengo un problema con css y el centrado de la página en explorer. Pude lograrlo utilizando los trucos de acá arriba, pero ahora tengo el mismo problema pero con mozila.
Hay algo que sirva para que se vea bien en los dos?
Pues me temo que la mejor solución que tienes es crear una hoja de estilo normal para los navegadores modernos y una hoja para Internet Explorer a la que llames mediante comentarios condicionales