Mostrando entradas con la etiqueta estándares. Mostrar todas las entradas
Mostrando entradas con la etiqueta estándares. Mostrar todas las entradas

lunes, 21 de abril de 2008

Cada uno a su bola

Escribíamos hace unas semanas sobre lo difícil que es para un diseñador de páginas web conseguir que el mismo diseño se vea igual de bien en todos los navegadores. Hoy ahondamos un poco más en la cuestión.

Para formatear y dar estilo a las páginas web actualmente se utiliza una tecnología llamada CSS (Cascading Style Sheets u Hojas de Estilo en Cascada).
La CSS permite que los elementos de una página web se vean de una forma u otra sin necesidad de tocar el contenido. Esto es una práctica muy aconsejable, puesto que conseguimos separar e independizar por un lado el texto o contenido de la página y por otro la presentación.

Hasta hace unos años, las páginas web se maquetaban y se les daba estilo con etiquetas HTML dentro del texto que no aportaban contenido, si no formato. Afortunadamente, casi nadie trabaja así actualmente.

El problema es que cada navegador interpreta un poco a su aire estas reglas CSS, con lo que surge el problema que comentábamos en la entrada anterior: los diseñadores tienen que saberse un montón de "trucos" para conseguir que la misma CSS sirva para todos los navegadores.

Existe una organización llamada "Web Standards Project" que promueve el uso de estándares y tecnologías compatibles en las páginas web. Se les conoce sobre todo porque han preparado una serie de pruebas para ver si un navegador es compatible e implementa correctamente las especificaciones de los distintos estándares (CSS, HTML, etc).
Esta prueba se llama "Acid Test" y tiene varias versiones, la que se supone que deberían pasar los navegadores actuales es la versión 2 (la versión 1 de la prueba la pasan los 5 navegadores más utilizados (Firerox, Explorer 6 y 7, Opera y Safari).

Vean la prueba Acid 2 en estos cinco navegadores. Lo que el navegador debería mostrar es una carita como ésta:

Test Acid2

Y así la muestran ...

Internet Explorer 6
acid2-ie6.png

Internet Explorer 7:
acid2-ie7.png

Mozilla Firefox:
acid2-ff.png

Opera:
acid2-opera.png

Safari:
acid2-safari.png

La prueba Acid tiene detractores, pero para el propósito de esta entrada nos vale: es sorprendente comprobar cómo los distintos navegadores interpretan las mismas reglas. También es sorprendente cómo los navegadores menos usados (Opera y Safari) son los que mejor implementan las tecnologías web.

Resumen: la próxima vez que Ud. visite una página web en la que se vea algo extraño o descolocado, verifique (si tiene tiempo y ganas, claro) cómo se ve la página con otro navegador, especialmente si usa alguna versión de Internet Explorer.

viernes, 28 de marzo de 2008

La pesadilla de los programadores y diseñadores

Nos contaba hace un par de días Blanca Salvatierra en un artículo la existencia de una página web que instaba a los usuarios del navegador Internet Explorer 6 a actualizarse o cambiar de navegador.

Realmente es un dolor tener que desarrollar páginas web que se vean bien en todos los navegadores. Aunque la mayoría de los diseñadores y programadores ya se saben los "trucos" para conseguirlo, no deja de ser una gran pérdida de tiempo y esfuerzo.

A día de hoy, los lectores de Público.es utilizan cinco navegadores principalmente (porcentajes aproximados): Internet Explorer 7 (~ 30 % de los usuarios) , Internte Explorer 6 (~ 30%), Mozilla Firefox (~ 30%), Apple Safari (~ 2%) y Opera (~1%).

De estos cinco navegadores, el Internet Explorer 6 (abreviado como IE6) es el menos compatible, para que una página que se ve bien en el resto se vea en IE6 muchas veces hay que recurrir a trucos y "chapucillas".

¿Cómo puede ser ésto? Las páginas web actualmente se basan (principalmente) en tres "lenguajes" con funciones diferenciadas, todos ellos estandarizados por organizaciones de internacionales: HTML, CSS y JavaScript.
El lenguaje HTML es el que contiene el texto o contenido significativo de una página web, el CSS se encarga de formatear y dar estilo a este texto. Finalmente, con JavaScript podemos hacer que el usuario interaccione con una página web de diferentes formas.

El problema es que en teoría todos los navegadores soportan estos tres lenguajes, pero en la práctica, cada uno lo hace a su manera, y de todos ellos, el IE6 es el que más extraño se comporta.

Supongamos que tenemos el siguiente fragmento de HTML (simplificado):

Prueba con HTML





Título del documento





Listado de palabras



  • Palabra 1

  • Palabra 2

  • Palabra 3

  • Palabra 4

  • Palabra 5




Esto es un párrafo de texto, párrafo de texto,
párrafo de texto,párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto.
Esto es otro párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto.



Esto es un texto en el pie de la página.





Este documento se vería así en los distintos navegadores (pulsar para ampliar):

Captura navegadores sin estilos

No hemos especificado ningún estilo, así que los navegadores formatean el texto como les parece, aunque el resultado es muy parecido en todos los casos.

Ahora establecemos que este HTML utilice el siguiente CSS que lo formateará. Este CSS es bastante ingenuo, ya que no tiene en cuenta las peculiaridades de los distintos navegadores. Lo que pretende es establecer una página centrada, con una cabecera gris, un cuerpo azul con dos columnas, verde y amarilla y un pie de página rojo:
#contenedor {
border: solid 1px black;
padding: 10px;
width: 750px;
margin: 0 auto;
}
#cabecera {
background-color: gray;
width: 730px;
}
#cuerpo {
background-color: blue;
width: 730px;
}
#pie {
background-color: red;
width: 730px;
}
#colizda {
width: 180px;
background-color: green;
float: left;
padding: 10px;
}
#coldcha {
width: 510px;
background-color: yellow;
float: left;
padding: 10px;
}

Las diferencias entre navegadores son notorias:





















ff-antes.pngMozilla Firefox
opera-antes.pngOpera
safari-antes.pngSafari
ie7-antes.pngExplorer 7
ie6-antes.pngExplorer 6

Hacemos algunos ajustes adicionales conseguimos al fin que en todos se vea igual:
body {
/* Para centrar en IE6 */
text-align: center;
}
p, ul {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
#contenedor {
margin: 0 auto;
width: 770px;
}
#contenido {
border: solid 1px black;
padding: 10px;
width: 750px;
/* Para expandir la capa hacia abajo en
Safari, Opera y Firefox */
float: left;
/* Para compensar el apaño de IE6 en body */
text-align: left;
}
#cabecera {
background-color: gray;
float: left;
width: 750px;
}
#cuerpo {
background-color: blue;
float: left;
width: 750px;
}
#pie {
background-color: red;
float: left;
width: 750px;
}

Y éste es el resultado:





















ff-despues.pngMozilla Firefox
opera-despues.pngOpera
safari-despues.pngSafari
ie7-despues.pngExplorer 7
ie6-despues.pngExplorer 6

Lo más chocante es que para que en IE6 se vea la página centrada tenemos que establecer una propiedad ilógica: que el texto en la etiqueta "body" esté centrado (text-align: center;)
Por otra parte, los dos Internet Explorer expanden y muestran la capa contenedora de las columnas (fondo azul), mientras que en los demás hay que hacerla visible explícitamente.

En general el comportamiento de IE7, Firefox, Opera y Safari es muy similar, los problemas siempre los suele dar el IE6.

Se comprende entonces que los diseñadores de páginas web estén hartos del Explorer 6 y su peculiar forma de interpretar los estándares.

Créditos: gracias a Daniel Solana Tacón, diseñador web de Público por ayudarme con estos CSS.