Las hojas de estilo en cascada (CSS) permiten que separemos la estructura de una web de su presentación o diseño. Sin tocar el código de la web, podemos cambiar los elementos de posición, el tamaño de los textos, los colores de fondo, etc. Tan sólo haciendo modificaciones en el fichero CSS.
Éste no pretende ser un post larguísimo predicando las ventajas del CSS, sencillamente voy a hablaros de cómo centrar imágenes o alinearlas a cualquier lado usando las hojas de estilo. Aunque primero vamos a hacer un recorrido sobre la alineación de las imágenes en sus comienzos y luego seréis vosotros quienes saquéis la conclusión sobre si CSS es mejor o no 🙂
Para una mejor comprensión de este texto, es recomendable tener ciertas nociones básicas de HTML y uso de CSS.
HTML: El origen
La etiqueta <img>
(que nos permite añadir imágenes en nuestra web) admite el atributo align
que puede tomar los siguientes valores: left, right, top, texttop, middle, absmiddle, bottom, absbottom, baseline. Cada valor permite que podamos alinear la imagen a la izquierda, derecha, etc. con respecto al texto o contenido.
Si queremos alinear una imagen a la derecha tendríamos que escribir:
<img src="imagen.jpg" alt="Esto es una imagen" align=right>
El problema: tenemos que conformarnos con la alineación que hace el navegador. Si no nos gusta, por ejemplo, que la imagen se pegue tanto al margen o queremos que esté algo más separada del párrafo o elemento anterior, el código cambiaría de esta manera:
<img src="imagen.jpg" alt="Esto es una imagen" align=right vspace=20 hspace=10>
Conseguiríamos que la imagen tuviera una separación superior e inferior de 20 pixels (vspace
) y una lateral (hspace
) de 10 pixels.
El código ha crecido, aunque no supone ningún trauma, ¿no? Ahora, piensa, si un día decides cambiar el aspecto de tu web y no prefieres que las imágenes tengan el mismo margen lateral y quieres poner un valor menor, ¿qué tendrías que hacer? Cambiar uno a uno todos los valores de hspace
que haya en todas las imágenes (es muy probable que sea más de una) que tengas en tu web. Un gran problema, ¿verdad? Afortunadamente, la historia evoluciona 🙂
XHTML + CSS: La elegancia
Con las hojas de estilo, somos nosotros los que podemos cambiar el comportamiento por defecto de las etiquetas. En nuestro caso, queremos modificar el comportamiento de la etiqueta <img>
. Veamos lo que tendríamos que hacer para darle un margen lateral de 10 pixels:
img { margin-top: 20px; margin-bottom: 20px; margin-left: 10px; margin-right: 10px }
Y obtendríamos el mismo resultado que <img src="imagen.jpg" alt="Esto es una imagen" align=right vspace=20 hspace=10>
. (Podéis pensar que vspace
es equivalente a margin-top
y margin-bottom
; y hspace
sería equivalente a margin-left
y margin-right
.)
Seguro que estáis pensando que hay que escribir más usando CSS que de la forma «antigua». Antes de seguir pensando, mirad lo siguiente:
<img src="imagen.jpg" alt="Esto es una imagen" />
Ya está, usando así la etiqueta <img>
obtendremos la presentación que queríamos ya que usará el estilo que hemos definido para esa etiqueta en nuestra hoja de estilos. Decidimos el aspecto de cada elemento en la CSS y no en nuestro código.
Esperad, que hay más. Podemos abreviar la definición del estilo:
img { margin: 20px 10px 20px 10px }
Y es exactamente lo mismo. Para entender a qué corresponde cada valor, empieza como si fueran las doce (en un reloj de aguja) y ahora desplázate en sentido horario. Entonces, sería margin-top
(20px), margin-right
(10px), margin-bottom
(20px) y margin-left
(10px). No es complicado y nos hemos ahorrado 3 líneas.
¿Pero qué pasa con la alineación? Bueno, bueno, ahora nos ponemos, ¡qué impacientes! Podríamos usar también el atributo align
, pero nosotros queremos tener un control total, aplicar nuestra propia alineación a la derecha o izquierda. Sin más preámbulos, un posible estilo para alinear una imagen a la derecha:
img.derecha { float: right; margin: 0 0 20px 20px; display: block }
Con float
hacemos que la imagen se desvincule del flujo normal del documento y que se vaya a la derecha del mismo. Con el atributo margin
establecemos el margen respecto al resto de elementos de la página que rodean la imagen. Y con display
hacemos que se comporte como un elemento de bloque (ya que img
es un elemento en línea).
En nuestro XHTML: <img class="derecha" src="imagen.jpg" alt="Esto es una imagen" />
Fíjate que tenemos un atributo nuevo class
cuyo valor es el de nuestro estilo (podemos darle el nombre que queramos a nuestro estilo que para eso es nuestro. «derecha» me pareció bastante descriptivo :-P). Por decirlo de alguna manera, es la forma que tenemos para decir que queremos usar ese estilo en esta etiqueta.
¿Y si queremos alinear a la izquierda?
img.izquierda { float: left; margin: 0 20px 20px 0; display: block }
Para usarlo: <img class="izquierda" src="imagen.jpg" alt="Esto es una imagen" />
Complicado, ¿eh? Venga, ya que estamos animados, ahora vamos a centrar la imagen:
img.centrar { margin: 10px auto; display: block }
Y para usarlo: <img class="center" src="imagen.jpg" alt="Esto es una imagen" />
.
¿Sólo eso? Esperad, que aquí hay un poco más de «chicha». Si sólo ponemos dos valores en el atributo margin
, el primero hace referencia a margin-top
y margin-bottom
; el segundo se aplica a margin-right
y margin-left
. Otra forma de ahorrar. Maravilloso 🙂 Pero, ¿qué es esto de auto
? Aquí podemos tener algún problemilla con cierto navegador. El valor auto
le dice al navegador que calcule (así no lo hacemos nosotros) el mismo margen en ambos lados (en este caso) consiguiendo así que la imagen quede centrada. Sin embargo, hasta la versión 7 del Internet Explorer (si no me equivoco), este navegador (y puede que alguno más) no interpreta correctamente el valor auto
, así que habrá que hacerlo a mano si te importan los usuarios de ese «navegador».
Para acabar, si ahora quisiéramos alinear una imagen que antes estaba centrada, bastará con poner derecha
o izquierda
donde antes estaba centrar
(en el atributo class
).
Y eso es todo, aunque apenas he hecho un esbozo de todo lo que se puede hacer con CSS y, en este caso, las imágenes. No he querido entrar en muchos detalles, sólo explicar lo más importante. Por supuesto que si quedan dudas, sólo tenéis que disparar 🙂
Hala, a alinear imágenes como los mayores 😛