Este documento presenta una introducción al lenguaje XHTML y las hojas de estilo en cascada (CSS), explicando sus características y ventajas para el desarrollo web. Se describe brevemente el XHTML como una versión modernizada de HTML que separa la estructura semántica del contenido de su presentación visual, la cual es controlada por CSS. También incluye un índice de los temas que serán cubiertos en el documento.
Este manual da una introducción al Software Libre Maxima v5.25.1, presentándolo como un potente Sistema de Álgebra Computacional (Computer Algebra System, o CAS) cuyo objeto es la realización de cálculos matemáticos, tanto simbólicos como numéricos; además de ser expandible, pues posee un lenguaje de programación propio.
Es un viejo curso de PHP-Nuke, uno de los primeros sistemas gestores de contenido útiles y de software libre. Lo interesante es que trae una parte con un brevísimo curso de HTML que puede seguir siendo útil.
Este manual da una introducción al Software Libre Maxima v5.25.1, presentándolo como un potente Sistema de Álgebra Computacional (Computer Algebra System, o CAS) cuyo objeto es la realización de cálculos matemáticos, tanto simbólicos como numéricos; además de ser expandible, pues posee un lenguaje de programación propio.
Es un viejo curso de PHP-Nuke, uno de los primeros sistemas gestores de contenido útiles y de software libre. Lo interesante es que trae una parte con un brevísimo curso de HTML que puede seguir siendo útil.
Un proyecto digital requiere de un método y proceso de desarrollo en cuanto a su estructura visual. Las partituras visuales como los bocetos son herramientas relevantes al momento de crear un guión gráfico para el diseño visual y presentación de contenidos.
Entender el universo complejo de información que cohexiste con nosotros y declarar metodologías de ordenar, encausar y comunicar por medio de diseñar la información.
La información como fundamento del diseñoiConstruye
Entender el universo complejo de información que cohexiste con nosotros y declarar metodologías de ordenar, encausar y comunicar por medio de diseñar la información.
7. Cap´
ıtulo 1
Introducci´n al XHTML
o
Este tutorial cubre c´mo crear p´ginas web usando las tecnolog´ est´ndares
o a ıas a
recomendadas por el World Wide Web Consortium1 : XHTML y CSS. No son
necesarios conocimientos previos, as´ que lo unico que necesitas es:
ı ´
Un editor de texto plano: Si usas Windows, sirve el Bloc de Notas. Ten
cuidado si usas un procesador de textos, como el Word, ya que da formato
y no queremos eso. Si usas Linux, pues tienes un mont´n para elegir: vim,
o
emacs, Joe, Kate, etc.
Un navegador que funcione bien y cumpla los est´ndares: el Mozilla
a
Firefox, por ejemplo. Es multiplataforma, libre, y lo puedes bajar desde
la web del proyecto Mozilla 2 .
Un navegador que funcione mal, tenga todo el mundo y pase de los
est´ndares: Ya-sabes-cu´l 3 .
a a
Es muy recomendable que tengas a mano el editor y un navegador para ir
probando los ejemplos que salen aqu´ Es la unica forma de aprender.
ı. ´
1.1. ¿Qu´ es el XHTML?
e
XHTML significa eXtensible HyperText Markup Language y es la versi´n o
modernizada del tradicional HTML4 , pero compatible con XML. Si ya conoces
HTML, al final hay un ap´ndice para que sea m´s f´cil la migraci´n a XHTML.
e a a o
Es un lenguaje sem´ntico, lo que quiere decir que no definimos el aspecto
a
de las cosas, sino lo que significan. Por ejemplo, si tenemos nuestro t´
ıtulo de
1 Es el organismo que se encarga de regular los est´ndares de la Web. Su URL es
a
http://www.w3c.org
2 http://www.mozilla.org
3 Su nombre est´ escrito en la Lengua Negra, que no pronunciar´ aqu´
a e ı.
4 Lenguaje utilizado para crear p´ginas web.
a
6
8. la p´gina, en lugar de decir “Lo quiero grande en letras rojas”, le indicamos
a
al navegador que “Este es el t´
ıtulo principal de la p´gina. Haz algo para que
a
destaque”.
Obviamente, podemos controlar el aspecto que tienen nuestras p´ginas, pero
a
eso es tarea de las CSS.
1.2. ¿Y eso de CSS?
CSS son las siglas de Cascading Style Sheets y son un regalo del cielo. Si
el documento XHTML est´ bien estructurado, podemos cambiar totalmente
a
su apariencia sin tocar una s´la l´
o ınea de c´digo en el archivo .html. Esto nos
o
permite separar el contenido del aspecto, y es de gran importancia.
Si quer´is ver un ejemplo de c´mo con el mismo c´digo XHTML y distinto
e o o
archivo CSS se pueden conseguir resultados muy diferentes, a la vez que espec-
taculares, echadle un vistazo a CSS Zen Garden: The Beauty in CSS Design 5 .
1.3. ¿C´mo funciona el XHTML?
o
XHTML est´ basado en etiquetas. Una etiqueta tiene la siguiente forma:
a
<etiqueta> Algo aqu´ dentro </etiqueta>
ı
Volviendo al ejemplo anterior de nuestro t´ ıtulo: la etiqueta para poner el
t´
ıtulo principal en la p´gina es <h1>. Entonces nos quedar´
a ıa:
<h1>What is the Matrix?</h1>
Como ves, <h1> marca el inicio de la etiqueta, mientras que </h1> se encarga
de cerrarla. Hay etiquetas que funcionan con una sola parte, y son as´ ı:
<etiqueta />
Observa el espacio en blanco que hay entre el nombre de la etiqueta y la
barra /. Es muy importante para que los navegadores antiguos no se vuelvan
locos.
Hay etiquetas que pueden modificarse mediante atributos. Ahora mismo
no hace falta entender qu´ hacen, ya los veremos m´s adelante. S´lo qu´date
e a o e
con c´mo van escritos:
o
<etiqueta atributo="valor">
5 http://www.csszengarden.com
7
9. Por ultimo, comentar un par de reglas que siguen las etiquetas: siempre en
´
min´ sculas y los atributos entre comillas6 .
u
1.4. ¿Pero para hacer webs no se usa el Front-
Page?
S´ Tambi´n puedes fre´ huevos con aceite para el coche.
ı. e ır
1.5. Mi amigo que es dise˜ ador usa Dreamweaver
n
El Macromedia Dreamweaver es un editor WYSIWYG7 muy extendido. Y
muy bueno, por cierto. El problema es que nos permite hacer webs sin tocar
nada de c´digo.
o
S´ eso es un problema. Genera c´digo basura y no tenemos control sobre lo
ı, o
que hacemos. As´ que antes de usar Dreamweaver o algo similar, tenemos que
ı
aprender a hacer las webs nosotros solos.Que quede claro que es mi opini´n y
o
no Ley Divina :P
1.6. Una preguntilla...
¿Has mirado primero en Google 8 ? Es muy listo y lo sabe (casi) todo. Si aun
as´ no te aclaras, mi e-mail es benko@ladybenko.net
ı
6 Esto es una diferencia respecto al HTML, ya que pod´ ıamos poner atributos sin comillas
y no importaba si escrib´ıamos en may´ sculas o min´ sculas.
u u
7 What You See Is What You Get (Lo que ves es lo que obtienes).
8 http://www.google.es
8
10. Cap´
ıtulo 2
Estructura de un
documento XHTML
Este cap´
ıtulo es tremendamente aburrido, pero muy importante. No es muy
largo, as´ que presta atenci´n. Ahora aprenderemos a formar el esqueleto de
ı o
nuestros archivos para poder usarlo m´s adelante como plantilla.
a
2.1. El DOCTYPE y la codificaci´n
o
La primera l´ınea que debemos tener en nuestro documento XHTML es la
que marca la codificaci´n. ¿Qu´ es esto? Simplemente el formato en el que
o e
guardamos nuestro archivo. La codificaci´n est´ndar es la Unicode (UTF-8)
o a
y soporta caracteres de todas las lenguas (occidentales, griegos, chinos, ´rabes,
a
japoneses, coreanos...). Aseg´rate de que el editor de textos que uses te guarda
u
el archivo en formato Unicode1 . Al grano, tenemos que escribir esto2 :
<?xml version="1.0" encoding="UTF-8"?>
A continuaci´n tenemos que indicar el DOCTYPE. Se encarga de decir-
o
le al navegador qu´ demonios contiene el archivo que est´ abriendo. Nosotros
e a
usaremos la especificacion XHTML 1.0 Strict, que es esta:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Como ves, estas dos etiquetas no llevan la barra / de cierre. Son las unicas,
´
as´ que no te malacostumbres. Por motivos de espacio, la l´
ı ınea del DOCTYPE
1 Si usas Bloc de Notas, en el cuadro de di´logo de Guardar Como. . . , debajo del nombre
a
del archivo aparece una lista desplegable para elegir la codificaci´n.
o
2 No somos masocas, as´ que no nos la tenemos que aprender de memoria. Simplemente
ı
copia y pega.
9
11. aparece cortada. No importa, porque el navegador interpreta los saltos de l´
ınea
en el c´igo como espacios en blanco. En realidad podr´
o ıamos escribir todo el
archivo XHTML en una sola l´ ınea. O cada palabra en una l´
ınea diferente.
Despu´s del DOCTYPE tenemos a la cabecera y al cuerpo encerrados entre
e
las etiquetas <html> y </html>
2.2. El elemento ra´ (HTML)
ız
El resto de nuestro documento tiene que ir encerrado por la etiqueta <html>.
Pero en esa etiqueta tenemos que indicar una serie de cosas, como que nuestro
documento es XHTML y la lengua que utilizamos. Si escribimos en castellano,
nos quedar´ as´
ıa ı:
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="es" lang="es">
Las letras es son el c´digo de la lengua correspondiente al castellano. Pod´is
o e
ver algunos otros c´digos3 en el cuadro 2.1.
o
Cuadro 2.1: Algunos c´digos de lenguas
o
C´digo
o Lengua
es Castellano
ca Catal´n
a
gl Gallego
eu Vasco
en Ingl´s
e
fr Franc´se
it Italiano
de Alem´n a
ja Japon´s e
2.3. La cabecera (HEAD)
La cabecera contiene informaci´n que no forma parte del contenido de la
o
p´gina, como el t´
a ıtulo, v´
ınculos a hojas de estilo CSS, informaci´n para robots
o
de b´squeda, scripts, etc. Por ahora nos quedaremos s´lo con el t´
u o ıtulo de la
p´gina. La cabecera va encerrada entre <head> y </head> y el t´
a ıtulo entre
<title> y </title>
<head>
3 Los trekkies pod´is escribir en vuestra lengua con el c´digo x-klingon.
e o
10
12. <title>T´tulo de la web</title>
ı
</head>
El sangrado no es obligatorio, pero s´ que viene muy bien para aclararnos
ı
mejor con el c´digo.
o
2.4. El cuerpo (BODY)
Por ultimo, nos encontramos con el cuerpo, encerrado entre <body> y </body>,
´
y que contiene toda la “chicha”. Quedar´ tal que as´
ıa ı:
<body>
Aqu´ va el cuerpo de la web
ı
</body>
2.5. Nuestra plantilla
Haciendo recopilaci´n, nos quedar´ algo como esto:
o ıa
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="es" lang="es">
<head>
<title>T´tulo de la web</title>
ı
</head>
<body>
Aqu´ va el cuerpo de la web
ı
</body>
</html>
Y est´ pidiendo a gritos que guardes una copia en un archivito llamado
a
plantilla.html para usos posteriores.
11
13. Cap´
ıtulo 3
Etiquetas b´sicas
a
Ahora que conocemos la estructura de un documento XHTML, aprender-
emos las etiquetas b´sicas que nos permitan empezar a crear el contenido
a
nuestra p´gina web: p´rrafos, saltos de l´
a a ınea, t´
ıtulos, etc.
3.1. P´rrafos
a
Los p´rrafos sirven para estructurar el contenido. En la web funcionan igual
a
que en la vida real: contienen una o m´s frases con relaci´n entre s´ Para crear
a o ı.
un p´rrafo, metemos texto entre las etiquetas <p> y </p>. Un ejemplo1 :
a
<p>
Hola, me llamo Luke Skywalker y soy piloto de una X-Wing, en el
Rogue Squadron. Tambi´n soy un Jedi del Lado Luminoso de la Fuerza.
e
Mis maestros han sido Obi-Wan Kenobi y Yoda.
</p>
3.2. Saltos de l´
ınea
A veces, dentro de un mismo p´rrafo necesitamos cambiar de l´
a ınea. Esto lo
conseguimos con la etiqueta <br />, as´
ı:
<p>
Dark Chest of Wonders<br />
Seen trought the eyes<br />
Of the one with pure heart<br />
Once, so long ago.
</p>
1 Da igual insertar un salto de l´
ınea entre la etiqueta y el contenido, ya que ser´ interpretado
a
como un espacio en blanco.
12
14. ısima canci´n2 de Nightwish, por cierto.
Chul´ o
3.3. T´
ıtulos (headings)
Los t´ıtulos nos sirven para agrupar informaci´n. Imaginemos la secci´n de
o o
enlaces de nuestra p´gina. El t´
a ıtulo principal podr´ ser Mis Links Favoritos.
ıa
Luego tendr´ ıamos los enlaces clasificados en secciones (cada secci´n etiquetada
o
con un subt´ıtulo), como Blogs, Descargas y Videojuegos. Incluso en una de estas
secciones podr´ ıamos tener varias categor´ (marcadas con un sub-subt´
ıas ıtulo),
como RPGs, Aventura, Acci´n y Lucha.
o
Para conseguir esto, tenemos las etiquetas <hx> y </hx>, donde x es un
n´mero del 1 al 6. <h1> corresponde al t´
u ıtulo m´s importante y deber´ haber
a ıa
s´lo uno por p´gina. Veamos un ejemplo:
o a
<h1>Mis aficiones</h1>
<h2>Los videojuegos</h2>
<p>
Mis videojuegos preferidos son los cl´sicos plataformas para la
a
Master System y la Megadrive, como el Sonic, Alex Kidd, Dinamite
Headdy, etc.
</p>
<p>
Tambi´n me gustan las aventuras gr´ficas en 2D de toda la vida,
e a
como Goblins 3, Monkey Island, Woodruf, Simon the Sorcerer...
</p>
<h2>M´sica</h2>
u
<p>
Me gusta escuchar rock en ingl´s. Mis grupos favoritos son
e
Dover, Nightwish, Sonata Arctica, HIM, etc. Tambi´n escucho
e
m´sica en castellano, como Mecano, M¨go de Oz y La Oreja de Van
u a
Gogh.
</p>
3.4. Los Blockquotes
Los blockquotes sirven para mostrar un bloque que indica que lo que hay
en el interior es una cita. Los navegadores normalmente los muestran con un
indentado, aunque esto se puede cambiar con CSS. Nuestras canciones quedar´
ıan
mejor as´ı:
2 Dark Chest of Wonders, de Nightwish, en el ´lbum Once.
a
13
15. <blockquote>
<p>
You think you have it all know:<br />
The wisdom, power, know-how.<br />
Can’t even think you’re wrong.<br />
This is the way the brain of male is made.
</p>
</blockquote>
Esta vez se trata de una de Sonata Arctica 3 .
3.5. Separadores horizontales
Los separadores horizontales (horizontal rules) han ca´ en desuso, ya
ıdo
que podemos conseguir bordes delimitadores mediante CSS. Pero como el saber
no ocupa lugar, nos quedaremos con la etiqueta <hr /> :
<h2>Los videojuegos</h2>
<p>Bla bla bla...</p>
<hr />
<h2>M´sica</h2>
u
<p>Bla bla bla</p>
3.6. Comentarios
Los comentarios son notas que ponemos en el c´digo fuente de una p´gina,
o a
pero que no se muestran. Para el navegador, son invisibles. Son utiles para
´
indicar qu´ hacen ciertas partes del c´digo. Para insertar un comentario, lo
e o
escribimos entre <!-- y --> . Ten en cuenta que el comentario tiene que estar
en una sola l´
ınea.
<!-- Esto es un comentario -->
3 Weballergy, de Sonata Arctica, en el ´lbum Silence
a
14
16. Cap´
ıtulo 4
Etiquetas de formato
Ahora veremos c´mo destacar ciertas partes del contenido de nuestra p´gina
o a
para hacer m´s clara la lectura. Si ya tienes nociones de HTML, al final del
a
ıtulo hay un apartado para los aficionados de <b> y compa˜´ 1 .
cap´ nıa
Hay que tener en cuenta que el aspecto de todos estos formatos son total-
mente configurables con CSS.
4.1. ´
Enfasis
Para dar ´nfasis a un texto disponemos de la etiqueta <em> . Si queremos
e
dar un ´nfasis m´s fuerte, utilizaremos <strong>. Un ejemplo2 :
e a
<p>
<em>Far</em> is not the word because I’m never
far <strong>enough</strong>.
</p>
Los navegadores suelen representar <em> con cursiva y <strong> con negrita.
4.2. Preformato
Como ya os habr´is dado cuenta, al interpretarse el c´digo XHTML se ig-
e o
noran espacios en blanco consecutivos, tabuladores, saltos de l´ ınea etc. Pero
muchas veces nos interesa que estas cosas se tengan en cuenta (imagina si quieres
insertar c´digo fuente, por ejemplo). Para esto tenemos la etiqueta <pre>:
o
<pre>
1 Recuerda: ¡son malvadas por naturaleza!
2 De la canci´n Far, de Dover, en el ´lbum Late at Night
o a
15
17. #include <stdio.h>
int main() {
printf("Hola mundo!n");
return(0);
}
</pre>
4.3. Citas
Si queremos marcar un texto como una cita, utilizaremos <cite> . La difer-
encia con <blockquote> es que <cite> no crea la cita en un bloque, sino que
la integra en el mismo texto. Los navegadores normalmente muestran el texto
citado con cursivas.
<p>
Alguien escribi´ que <cite>la vida es sue~o, y los sue~os,
o n n
sue~os son</cite>.
n
</p>
4.4. Acr´nimos y abreviaturas
o
Para explicar el significado de los acr´nimos y abreviaturas usaremos
o
<acronym> y <abbr> , respectivamente. El efecto es el mismo: al pasar el rat´n
o
por encima de la palabra, nos aparece un rect´ngulo de ayuda con lo que sig-
a
nifican.
Estas etiquetas necesitan un atributo para funcionar, y es title . Como
valor de ese atributo escribiremos el texto con el significado del acr´nimo o
o
abreviatura. As´
ı:
<p>
Mi ordenador tiene 512 <abbr title="Megabytes">Mb</abbr> de
memoria <acronym title="Random Access Memory">RAM</acronym>.
</p>
4.5. Acerca de b y sus secuaces
Si eres de la vieja escuela de webmasters, probablemente est´s acostumbrado
e
a dar formato al texto utilizando <b> , <i> , etc para conseguir texto en negrita,
cursiva, subrayado, monoespaciado, etc.
Olv´
ıdate.
16
18. HTML 4 nos permit´ indicar c´mo iba a ser mostrado el texto. Por ejemplo,
ıa o
estaba la etiqueta <font> 3 , que nos permit´ cambiar la fuente, tama˜o y color
ıa n
del texto. Con XHTML nos olvidamos de eso y nos dedicamos a estructurar
el texto y a darle un contenido sem´ntico.
a
¿Qu´ es esto de la sem´ntica? Deprisa y corriendo, viene a ser que una
e a
m´quina entienda un texto. Un ordenador no sabe qu´ significa el que algo
a e
est´ en negrita. Pero s´ entiende que algo que tiene ´nfasis es importante, y
e ı e
debe ser destacado de alguna forma. Puede parecer una tonter´ pero a la hora
ıa,
de trabajar con navegadores de texto, o para personas ciegas, o desde m´viles,
o
la cosa cobra importancia.
3 La m´s malvada entre las malvadas.
a
17
19. Cap´
ıtulo 5
Enlaces
Ya sabemos las etiquetas necesarias para escribir texto. Ahora toca aprender
a usar una de las caracter´
ısticas m´s importantes de la web: los enlaces (o links).
a
Se implementan con la etiqueta <a> .
5.1. Enlace a una p´gina externa
a
Si queremos un link a una p´gina que est´ en otro servidor, usamos <a>
a e
de esta forma:
<a href="http://www.loquesea.com" title="Descripci´n">
o
Texto del enlace
</a>
El atributo href contiene la URL a donde queremos enlazar. Es muy im-
portante que no se nos olvide el http:// o no funcionar´.
a
En title escribimos una descripci´n del sitio web al que enlazamos. Al
o
igual que con las etiquetas <abbr> y <acronym>, el texto aparecer´ al pasar el
a
rat´n por encima del link. No hay que confundir el t´
o ıtulo con el texto del enlace.
Son completamente independientes.
Imagina que quieres enlazar a Barrapunto1 :
<a href="http://www.barrapunto.com" title="Barrapunto:
la informaci´n que te interesa">Barrapunto</a>
o
1 Blog colectivo geek, similar a Slashdot. http://www.barrapunto.com
18
20. 5.2. Enlace a una p´gina local
a
Para enlazar a una p´gina que est´ en nuestro servidor, necesitamos saber
a e
la ruta (path) desde donde estemos hasta la ubicaci´n del archivo.
o
Si el origen (p´gina donde est´ el link) est´ en el mismo directorio que el
a a a
destino (p´gina a la que apunta el link), entonces s´lo tenemos que escribir su
a o
nombre:
<a href="profile.html" title="Informaci´n sobre m´">
o ı
Ficha personal
</a>
Si el destino estuviera en un subdirectorio, utilizamos una barra / para
indicar el camino2 :
<a href="galeria/color.html" title="Galer´a color">
ı
Ver dibujos a color
</a>
Si el destino estuviera un directorio por encima, se usan dos puntitos y una
barra ../ de esta manera:
<a href="../index.html" title="P´gina principal">
a
Volver al inicio
</a>
5.3. Enlace a una direcci´n de e-mail
o
Podemos hacer un enlace que al pulsar sobre ´l, se abra autom´ticamente
e a
una ventana del cliente de correo electr´nico que tenga el usuario3 para que
o
escriba un mensaje a esa direcci´n.
o
S´lo tenemos que poner en href la palabra mailto: seguida de una direcci´n
o o
de correo electr´nico. As´
o ı:
<a href="mailto:leia@alianza.net"
title="E-mail de la princesa Leia">Leia</a>
5.4. Anclas
Las anclas nos permiten enlazar a una posici´n concreta de la p´gina, en
o a
plan teletransporte. Funcionan as´
ı:
2 En Windows para mostrar una ruta, se utilizan las barras invertidas para separar los
directorios. Aqu´ usamos las barras normales.
ı
3 Normalmente el infame Outlook. Usa Thunderbird (http://www.mozilla.org), que es
mejor y libre.
19
21. En el punto al que queremos saltar, insertamos un ancla (usamos el atributo
id4 ):
<a id="nuestra_ancla" />
Si ahora vemos la p´gina en el navegador, no notaremos ninguna diferencia,
a
puesto que las anclas son invisibles. Para usarlas, debemos crear un link que nos
lleve a ese ancla:
<a href="#nuestra_ancla" title="descripci´n">Texto del enlace</a>
o
Observa que en el enlace hay que poner una almohadilla # delante del nom-
bre del ancla. Cuando creamos el ancla, no es necesaria la almohadilla.
Tambi´n podemos enlazar a un ancla que est´ en otra p´gina:
e e a
<a href="otra_pagina.html#ancla" title="descripci´n">
o
Texto del enlace
</a>
Las anclas son muy utiles para p´ginas muy extensas. Un ejemplo lo tenemos
´ a
en las FAQ5 . Las FAQ tienen un ´ındice de preguntas que enlazan al ancla corre-
spondiente. Si hacemos clic en la pregunta n´mero 3, nos enlazar´ a ese punto
u a
de la p´gina. Normalmente las preguntas tienen otro enlace que nos devuelve a
a
un ancla situada en el ´
ındice de preguntas, para facilitar la navegacion.
4 En HTML 4 se utilizaba el atributo name, pero con XHTML usamos id.
5 Recopilaci´n
o de las Preguntas M´s Frecuentes sobre un tema, contestadas.
a
20
22. Cap´
ıtulo 6
Listas
Ahora veremos como implementar listas en nuestras p´ginas. Las hay de tres
a
tipos: ordenadas, sin ordenar y de definici´n. Venga, que esto es muy facilito.
o
6.1. Listas ordenadas
Las listas ordenadas muestran sus elementos numerados. Se crean con la
etiqueta <ol>:
<p>Mis escritores favoritos (en orden de preferencia):</p>
<ol>
<li>R.A.Salvatore</li>
<li>J.K.Rowling</li>
<li>Isabel Allende</li>
</ol>
Hay que tener en cuenta que con CSS podemos cambiar el n´mero por el que
u
queremos empezar a contar, as´ como el tipo de numeraci´n (n´meros ar´bigos,
ı o u a
romanos, letras del abecedario, may´sculas...).
u
6.2. Listas sin ordenar
Las listas sin ordenar marcan a cada elemento con una vi˜eta, de modo
n
que no se sigue una numeraci´n. Se crean con la etiqueta <ul>:
o
<p>El helado perfecto (~am!):</p>
n
<ul>
<li>1 bola de helado de chocolate<li>
21
23. <li>1 bola de helado de lim´n</li>
o
<li>Trocitos de pi~a y melocot´n en alm´bar</li>
n o ı
<li>Sirope de chocolate</li>
</ul>
Al igual que con las listas ordenadas, podemos modificar su apariencia con
CSS y elegir el tipo de vi˜eta que queremos.
n
ısimo1 .
Por cierto, prueba el helado, est´ riqu´
a
6.3. Listas de definici´n
o
Las listas de definici´n se diferencian de las anteriores en que cada “´
o ıtem”
est´ compuesto por un par de elementos: un t´rmino y su definici´n. Se usan
a e o
estas etiquetas: <dl> para marcar la lista, <dt> para un t´rmino y <dd> para
e
su definici´n.
o
<p>Significado de algunos smileys:</p>
<dl>
<dt>:)</dt>
<dd>Sonrisa</dd>
<dt>xD</dt>
<dd>Carcajada</dd>
<dt>:P</dt>
<dd>Sacar la lengua</dd>
</dl>
Y s´ tambi´n se puede cambiar el aspecto y bla, bla, bla. Comentar que
ı, e
las palabras t´rmino y definici´n no s´lo se refieren a algo con su signficado,
e o o
tambi´n podemos usar una lista de definici´n para crear un profile (por ejemplo),
e o
relacionando los pares Nombre-Leia, Ciudad-Coruscant, Profesi´n-Senadora.
o
6.4. Listas anidadas
No, las listas anidadas no son un nuevo tipo de listas, s´lo una combinaci´n
o o
de las anteriores. Anidar significa meter una lista dentro de otra. Por ejemplo:
<ul>
<li>I Trilog´a del Elfo Oscuro</li>
ı
<li><ol>
<li>La Morada</li>
1 Tambi´n
e puedes a˜ adir guindas y nata.
n
22
24. <li>El Exilio</li>
<li>El Refugio</li>
</ol></li>
<li>Trilog´a del Valle del Viento Helado</li>
ı
</ul>
No es dif´
ıcil, s´lo debemos tener cuidado cerrando la etiqueta que toque.
o
¿C´mo lo sabemos? F´cil: primero se cierran las interiores, y despu´s las
o a e
de fuera. As´ si tenemos <li><ol> tenemos que poner primero </ol> y despu´s
ı, e
</li>.
23
25. Cap´
ıtulo 7
Im´genes
a
Las im´genes son un elemento importante a la hora de hacer m´s atractiva
a a
una web. No obstante, hay que saber cu´ndo utilizarlas y no abusar de ellas.
a
Podemos usar tres formatos de imagen: GIF, JPEG y PNG. El JPEG es el
m´s adecuado para im´genes con muchos colores, como fotograf´
a a ıas, y que no
tengan grandes ´reas de colores planos. Las im´genes GIF son de s´lo 8 bits
a a o
(256 colores), pero podemos usar un color transparente. El formato PNG es el
est´ndar y podemos elegir varias profundidades de paleta (n´mero de colores).
a u
Adem´s, podemos utilizar un canal alpha para crear transparencias. Pero Ya-
a
Sab´is-Cu´l navegador no implementa correctamente los PNG, as´ que hay que
e a ı
llevar cuidado.
7.1. Insertar una imagen
Para poner una imagen hacemos uso de la etiqueta <img> con unos cuantos
atributos:
<img src="image.gif" width="ancho" height="alto"
alt="descripci´n" />
o
Con src establecemos qu´ imagen queremos mostrar. Al igual que con los
e
links, hay que tener en cuenta la ruta hacia la imagen. Por motivos de organi-
zaci´n, normalmente tendremos las im´genes en un subdirectorio (o en varios)
o a
llamado images, as´ que pondr´
ı ıamos src="images/algo.gif".
Los atributos width y height nos permiten establecer el ancho y el al-
to de la imagen. Podemos indicar un valor en p´ ıxeles o en tanto por cien-
to. width="200" muestra la imagen con 200 p´ ıxeles de ancho, mientras que
width="200%" hace que se vea al doble de su anchura original. Estos dos atrib-
utos no son obligatorios, pero s´ es conveniente que pongamos las dimensiones
ı
en p´ıxeles reales, ya que ahorramos tiempo al navegador a la hora de maquetar
la p´gina.
a
24
26. El atributo alt contiene una descripci´n de la imagen, que veremos cuando
o
pasemos el rat´n por encima y mientras se carga el fichero. Tambi´n se mues-
o e
tra esta descripci´n cuando no se ha podido cargar la imagen. Es un atributo
o
obligatorio, por cuestiones de accesibilidad. Hay personas que deshabilitan la
carga de im´genes para ahorrar tiempo. Otras usan navegadores de texto como
a
el lynx. Y otras, sencillamente son ciegas.
Como ejemplo, as´ quedar´ una imagen de banner:
ı ıa
<img src="banner.gif" width="200" height="40"
alt="BenKo’s Art" />
7.2. Im´genes como links
a
Tambi´n podemos hacer que una imagen sea a su vez un enlace a una
e
p´gina. Los navegadores suelen mostrarla con un reborde para indicarnos que
a
se trata de un link, pero lo podemos cambiar con CSS.
Para poner una imagen como un link, la introducimos dentro de la etiqueta
<a>:
<a href="http://www.ladybenko.net" title="Portafolio online">
<img src="banner.gif" width="200" height="40"
alt="BenKo’s Art" />
</a>
Hay una t´cnica a la hora de implementar galer´ de im´genes, y es
e ıas a
hacerlo con thumbnails. ¿Qu´ es esto? Pues una thumbnail es una imagen m´s
e a
peque˜a que la original, de modo que al hacer clic sobre ella, cargamos la imagen
n
a tama˜o completo. Entonces, algunos iluminados hacen:
n
<a href="matrix.jpg" title="Wallpaper de Trinity">
<img src="matrix.jpg" width="100" height="50" alt="Trinity" />
</a>
¡Ol´ campeones! Si nuestro wallpaper de Trinity ocupa 100Kb (o m´s), ten-
e a
dremos esos 100Kb ¡como thumbnail! (justo lo que queremos evitar). El escalar
una imagen con width y height no hace que ocupe menos espacio1 . Tenemos
que coger un programa de dibujo, escalar la imagen y guardar esta copia m´sa
peque˜a (de 5Kb, por ejemplo):
n
<a href="matrix.jpg" title="Wallpaper de Trinity">
<img src="matrix_thumb.jpg" width="100" height="50"
alt="Trinity" />
</a>
1 Firefox no es tan bueno ;)
25
27. 7.3. Sobre el uso y abuso de im´genes
a
Se dice que una imagen vale m´s que mil palabras. Cierto, pero muchas
a
im´genes, o pocas mal puestas, pueden llegar a desesperar.
a
¿Te resulta esto familiar? Entras a una web con un fondo de color chill´n,
o
letras verde fosforito, una cantidad ingente de GIFs animados, marquesinas,
applets de Java, etc2 . ¿Cu´nto tiempo tardas en cerrar la p´gina? Yo es que ya
a a
act´o por reflejo.
u
Es por esto que debemos limitar los GIFs animados al m´ximo, as´ como
a ı
evitar el uso indiscriminado de im´genes. Recuerda: s´lo hay que poner las
a o
im´genes necesarias.
a
2 Aunque parezca mentira, esto estaba muy de moda en los tiempos de los m´dems a 56K.
o
26
28. Cap´
ıtulo 8
Tablas
Las tablas son el mecanismo que nos proporciona XHTML para presentar
informaci´n tabulada, como horarios o la clasificaci´n de la Liga. Son un
o o
poco engorrosas de utilizar, pero a veces son necesarias. As´ que all´ vamos.
ı a
8.1. Una tabla b´sica
a
Disponemos de las siguientes etiquetas para crear una tabla:
<table>: Crea la tabla
<caption>: Pone t´
ıtulo a la tabla
<tr>: Crea una fila
<td>: Crea una celda
<th>: Crea una celda de encabezamiento
Se entiende mejor con un ejemplo. Es muy conveniente utilizar bien los
sangrados, ya que hay que tener mucho cuidado con cerrar cuando corresponda
las etiquetas <tr>, <td> y <th>. Aqu´ tenemos a una tabla de 2x2:
ı
<table>
<caption>Videojuegos</caption>
<tr>
<th>T´tulo</th>
ı
<th>G´nero</th>
e
</tr>
<tr>
<td>Sonic</td>
<td>Plataformas</td>
27
29. </tr>
</table>
El mecanismo es siempre el mismo. Por cada fila que queramos, abrimos una
etiqueta <tr> e insertamos all´ las celdas que correspondan. Dentro de cada celda
ı
podemos insertar pr´cticamente cualquier cosa, pero debemos tener siempre
a
en mente que el objetivo de las tablas es tabular informaci´n.
o
8.2. Atributos de table
La etiqueta <table> dispone de una serie de atributos1 que nos permiten
modificar su borde y los m´rgenes de las celdas.
a
Para cambiar el tama˜o del borde de la tabla, usamos border con un valor
n
en p´
ıxeles. Si no indicamos nada, los navegadores suelen tomar como valor por
defecto 1 ´ 0. Si no queremos ning´n borde, debemos utilizar border="0".
o u
Si lo que queremos es cambiar la distancia entre una celda y otra, empleamos
el atributo cellspacing con un valor en p´ ıxeles. Y para modificar la distancia
del contenido de la celda a los bordes de esta, usamos cellpadding2 . La difer-
encia entre cellspacing y cellpadding puede confundir al principio, as´ que ı
lo mejor es verlo con un ejemplo3 (modificamos la tabla anterior):
<table border="1" cellpadding="10" cellspacing="30">
<caption>Videojuegos</caption>
<tr>
<th>T´tulo</th>
ı
<th>G´nero</th>
e
</tr>
<tr>
<td>Sonic</td>
<td>Plataformas</td>
</tr>
</table>
8.3. Expandir filas y columnas
Muchas veces necesitamos que una celda ocupe m´s de un espacio. Pongamos
a
como ejemplo nuestra socorrida tabla de videojuegos. ¿Qu´ pasa si queremos
e
meter m´s de un g´nero de cada videojuego? Podemos hacer que la celda de
a e
g´nero ocupe dos columnas y as´ podremos introducir dos g´neros por cada
e ı e
juego. As´
ı:
1 Los viejos atributos que en HTML 4 nos permit´ ıan establecer anchuras y colores son
sustituidos por CSS.
2 Aunque, en mi opini´n, es mejor usar CSS para esto.
o
3 Los valores est´n muy exagerados para que se note la diferencia.
a
28
30. <table>
<caption>Videojuegos</caption>
<tr>
<th>T´tulo</th>
ı
<th colspan="2">G´neros</th>
e
</tr>
<tr>
<td>Sim City</td>
<td>Simulaci´n</td>
o
<td>Estrategia</td>
</tr>
</table>
Como ves, para expandir una celda varias columnas hemos usado el atributo
colspan. Podemos hacer lo mismo con las filas, utilizando rowspan. Vamos a
hacer la misma tabla de antes, pero girada 90 grados:
<table>
<caption>Videojuegos</caption>
<tr>
<th>T´tulo</th>
ı
<td>Sim City</td>
</tr>
<tr>
<th rowspan="2">G´neros</th>
e
<td>Simulaci´n</td>
o
</tr>
<tr>
<td>Estrategia</td>
</tr>
</table>
¿Qu´ es un rollo esto de las tablas? Pues s´ pero no le des mucha importancia.
e ı,
La mayor´ de editores de c´digo HTML, como el Quanta o el Homesite +, traen
ıa o
asistentes para crear tablas de una forma m´s r´pida y sencila.
a a
8.4. ¿Tablas para layouts? ¡Insensato!
A d´ de hoy, la mayor´ de las p´ginas web est´n maquetadas usando tablas
ıa ıa a a
con border="0". Antes de la llegada de CSS era totalmente imposible crear
texto a columnas y, en definitiva, maquetar un sitio web4 . Afortunadamente,
CSS implementa capas, con lo que se puede configurar totalmente la apariencia
y colocaci´n de cada elemento de la p´gina mediante la hoja de estilos, dejando
o a
el c´digo XHTML de forma muy sencilla.
o
4 Bueno, con frames se pod´ hacer algo, pero era peor el remedio que la enfermedad.
ıa
29
31. ¿Entonces por qu´ la gente sigue usando tablas? Porque piensan que eso
e
de las capas es algo muy complicado. ¡Mentira! Lo que pasa es que nadie nace
ense˜ado y aprender algo nuevo siempre da un poco de pereza. En la parte de
n
CSS del tutorial aprenderemos a crear varios tipos de dise˜o populares para
n
as´ tumbar el mito de que las capas son dif´
ı ıciles.
Y, d´ndole la vuelta a la tortilla, ¿por qu´ no usar tablas? Pues porque las
a e
tablas no se han creado para maquetar y el WWW Consortium lo desaconseja.
Adem´s, en navegadores no visuales (de texto, para ciegos o otros dispositivos
a
que no sean un monitor) el resultado es totalmente imprevisible. ¿Quieres otra
raz´n de peso? Las tablas dan m´s trabajo. El c´digo queda m´s enrevesado y
o a o a
si queremos renovar el dise˜o de nuestra p´gina hemos de cambiar pr´ctica-
n a a
mente todo, mientras que si us´ramos un layout por capas s´lo tendr´
a o ıamos que
modificar el CSS. ¿M´s razones? Al ser el c´digo m´s complicado, las p´ginas
a o a a
son m´s pesadas y gastan m´s ancho de banda. Adem´s de que tardan m´s
a a a a
en cargar, ya que hasta que no se carga todo lo que hay en la tabla, no se
muestra el resultado.
El futuro es XHTML y sitios web importantes, como Blogger5 ya han re-
dise˜ado su web con capas. As´ que te animo a que cumplas los est´ndares y no
n ı a
uses las tablas para maquetar6 :)
5 Comunidad de Blogs de Google http://www.blogger.com
6 En la web de Steal these buttons! hay botoncitos muy cucos para layouts tableless (sin
tablas).
30
32. Cap´
ıtulo 9
Formularios
Los formularios nos permiten recoger informaci´n introducida por el usuario.
o
Esta informaci´n podemos enviarla por correo electr´nico o procesarla con un
o o
script.
Si se manda por correo electr´nico, hay que tener en cuenta que es informa-
o
ci´n no cifrada y que podr´ ser interceptada, as´ que no debe contener datos
o ıa ı
importantes. Un uso aceptable ser´ un formulario con comentarios sobre nues-
ıa
tra p´gina o para pedir un intercambio de links.
a
Si nuestro servidor dispone de tecnolog´ como PHP o CGI (por ejemplo),
ıa
podemos hacer m´s cosas con esa informaci´n, como guardarla en una base de
a o
datos o generar una p´gina din´micamente.
a a
9.1. La etiqueta FORM
Todo formulario est´ encerrado por <form> y </form>. Dentro de estas eti-
a
quetas, van los campos del formulario, y podemos usar p´rrafos y saltos de
a
l´
ınea. Vamos a ver un ejemplo de etiqueta <form>, suponiendo que va a ser un
formulario que se env´ por correo electr´nico:
ıa o
<form action="mailto:leia@alianza.net" method="post"
enctype="text/plain">
El atributo action recoge qu´ se va a hacer una vez que se pulse el bot´n de
e o
enviar. En ese ejemplo, el formulario se env´ a la direcci´n leia@alianza.net.
ıa o
Si tuvi´semos un script para procesar el formulario, hubi´semos puesto algo
e e
como action="enviar_info.php".
Con method especificamos c´mo va a ser enviada la informaci´n. Si uti-
o o
lizamos correo electr´nico, le damos el valor de post. Para scripts se suele uti-
o
31
33. lizar method="get", que pone el valor de las variables en la misma URL1 .
Por ultimo, con enctype="text/plain" conseguimos que a nuestro buz´n
´ o
llegue el formulario en texto plano sin caracteres extra˜os.
n
9.2. Campos de texto
La mayor´ de los campos de un formulario se crean con una sola etiqueta,
ıa
<input> y mediante su par´metro type especificamos el tipo de campo que
a
queremos. Un campo de texto b´sico quedar´ as´
a ıa ı:
<input type="text" id="nombre" name="nombre" size="20" />
Veamos ahora los atributos. Con type="text" indicamos que se trata de
un campo de texto. El atributo size recoge el ancho del campo, medido en
caracteres. Ahora bien, ¿qu´ hacen id y name?
e
Pues id es un identificador. Esto implica que nada en todo el documento
puede llamarse del mismo modo. Este par´metro sirve para CSS2 y tambi´n para
a e
otras cosas como su uso con la etiqueta <label> (que veremos a continuaci´n).
o
Con name damos nombre a la variable de ese campo. Por ejemplo, si el
usuario escribe “Morpheo” en el campo que hemos puesto antes de ejemplo, y lo
env´ recibir´
ıa, ıamos en nuestra bandeja de entrada un mail que contendr´ algo
ıa
as´
ı:
nombre=Morpheo
De todos modos, para ahorrarnos problemas, siempre que podamos es mejor
escribir el mismo valor para id y name. Hay que complicarse la vida lo menos
posible :)
Hay otros atributos adicionales para nuestros campos de texto. Podemos
indicar un n´ mero m´ximo de caracteres que puede introducir el usuario
u a
con maxsize. Y si queremos que aparezca un valor por defecto, utilizamos
value="algo". Por ejemplo, si queremos pedir la direcci´n de su p´gina web:
o a
<input type="text" name="url" id="url" size="30"
maxsize="255" value="http://" />
Y, por supuesto, no debemos olvidarnos de nuestro tan socorrido title, que
funciona igual que con la etiqueta <a>.
1 Si todo esto te suena a chino, no te preocupes. S´lo necesitas saberlo si utiliz´s un script...
o a
Y si lo haces, ya te ense˜ ar´n cuando aprendas a escribirlos ;)
n a
2 Estableciendo un aspecto exclusivo para ese elemento, por ejemplo.
32
34. 9.3. Campos de contrase˜ a
n
Los campos de contrase˜ a son exactamente iguales que los de texto, s´lo
n o
que el usuario en lugar de ver los caracteres que ha introducido, ve asteriscos.
Lo de exactamente iguales quiere decir que es texto, la informaci´n no va cifrada
o
de ninguna manera. La diferencia entre un campo de texto y uno de contrase˜a n
es meramente est´tica.
e
Los atributos son los mismos que con los campos de texto, lo unico que
´
cambia es que debemos introducir type="password". Ejemplillo:
<input type="password" name="pass" id="pass" size="20" />
9.4. Etiquetar campos
Ya hemos aprendido a crear campos de texto para nuestro formulario, ¿pero
c´mo le decimos al visitante qu´ es lo que tiene que introducir en cada campo?
o e
Podr´
ıamos hacer algo as´ı:
<p>
Nombre: <input type="text" name="nombre" id="nombre" size="20" />
<br />
E-mail: <input type="text" name="mail" id="mail" size="40" />
</p>
Sin embargo, podemos tener problemas en navegadores no visuales. ¿C´mo
o
sabemos que la palabra “nombre” hace referencia al campo con el atributo
id="nombre" ? Para eso disponemos de una etiqueta nueva, <label>.
Esta etiqueta se encarga de asociar texto con su campo de formulario cor-
respondiente. S´lo tiene un atributo, for, y en el tenemos que indicar la id del
o
campo al que queremos hacer referencia. Nuestro ejemplo anterior ser´ m´sıa a
correcto as´
ı:
<p>
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" id="nombre" size="20" />
<br />
<label for="mail">E-mail:</label>
<input type="text" name="mail" id="mail" size="40" />
</p>
9.5. ´
Areas de texto
Con las ´reas de texto damos al usuario la posibilidad de introducir texto
a
con varias l´
ıneas. La etiqueta a usar es <textarea> y su funcionamiento es algo
diferente al de <input>.
33
35. La etiqueta <textarea> dispone de los atributos id, name y title, y fun-
cionan como en el resto de campos de formulario. Adem´s, disponemos de otros
a
dos para indicar las dimensiones del ´rea de texto: cols se encarga de establecer
a
el ancho (medido en caracteres) y rows el alto, medido en l´ ıneas.
Como ejemplo, imaginemos que en una parte del formulario queremos poner
un campo para que el usuario deje un comentario. Como probablemente sea
largo, utilizamos un textarea:
<p>
<label for="comentario">Comentario:</label><br />
<textarea name="comentario" id="comentario" cols="30" rows="5">
Bla bla bla
</textarea>
</p>
F´ıjate en que <textarea> tiene etiqueta de cierre. El texto que hay entre
la etiqueta de apertura y la de cierre es el valor por defecto que contendr´ el
a
campo, en este caso Bla bla bla.
9.6. Casillas de verificaci´n
o
Una casilla de verificaci´n (m´s conocida como checkbox ) es un cuadra-
o a
dito que el usuario puede activar y desactivar pulsando en ´l. Se crean con
e
la etiqueta <input> y escribiendo type="checkbox". Los atributos id, name y
title funcionan con normalidad, pero value se usa de forma algo diferente
aqu´ Lo que escribamos en value es lo que nos saldr´ en el mail que recibamos
ı. a
como el valor de la variable (indicada en name) si la casilla est´ activada. Es
a
decir, que si ponemos esto. . .
<p>
Has jugado a...<br />
<input type="checkbox" name="monkey1" id="monkey1" value="si" />
<label for="monkey1">Monkey Island I</label>
</p>
. . . y el usuario activa la casilla, recibiremos un mail tal que as´
ı:
monkey1=si
Tambi´n podemos hacer que una casilla est´ activada por defecto, si a˜adi-
e e n
mos el atributo checked="checked". As´
ı:
<p>
Has jugado a...<br />
34
36. <input type="checkbox" name="monkey1" id="monkey1" value="si"
checked="checked" />
<label for="monkey1">Monkey Island I</label>
<input type="checkbox" name="xwing" id="xwing" value="si" />
<label for="xwing">X-Wing Alliance</label><br />
</p>
Nos quedar´ la casilla etiquetada como Monkey Island 3 activada, mientras
ıa
que la de X-Wing Alliance sin activar.
9.7. Botones de selecci´n
o
No s´ si el t´rmino botones de selecci´n es en realidad el m´s adecuado como
e e o a
traducci´n, as´ que mejor una explicaci´n de lo que hacen. El nombre en ingl´s
o ı o e
es radio button y son casillas circulares agrupadas en las que s´lo una puede
o
estar activada. Sirven para cuando queremos que el usuario s´lo seleccione una
o
opci´n de las m´ltiples que se le dan.
o u
Aunque se crean con la etiqueta <input> indicando type="radio", los radio
button son algo “especiales”, as´ que los veremos un poco m´s despacio.
ı a
Pongamos el caso de que queremos que el visitante de nuestra web nos in-
dique cu´l pel´
a ıcula de la trilog´ de Star Wars es su favorita. Evidentemente,
ıa
s´lo puede coger una, as´ que nos toca emplear radio buttons en lugar de casillas
o ı
de verificaci´n. Necesitamos entonces un bot´n por cada pel´
o o ıcula (tres en total).
¿C´mo los agrupamos? Pues dando el mismo nombre de variable a cada bot´n.
o o
Es decir, el atributo name siempre es el mismo para todo el grupo. ¿Y
qu´ hacemos con id? Bien, no puede haber dos valores o m´s de id repetidos,
e a
as´ que la id en cada bot´n ha de ser distinta. Es decir, los radio buttons son
ı o
el unico campo en el que id y name han de ser distintos. Disponemos adem´s
´ a
del atributo checked por si queremos poner alg´n valor por defecto. Nuestro
u
c´digo para este ejemplo ser´ as´
o ıa ı:
<p>
Peli preferida:<br />
<input type="radio" name="peli" id="peli_hope" value="hope"
checked="checked" />
<label for="peli_hope">A New Hope</label><br />
<input type="radio" name="peli" id="peli_empire"
value="empire" />
<label for="peli_empire">The Empire Strikes Back</label><br />
<input type="radio" name="peli" id="peli_jedi" value="jedi" />
<label for="peli_jedi">The Return of the Jedi</label><br />
3 Yo soy cola, t´ pegamento.
u
35
37. </p>
Usamos como nombre de variable (name) la palabra “peli”. Seg´n la pel´
u ıcula
que sea, cada bot´n tiene asignada una id distinta. Por ejemplo “peli hope” para
o
A New Hope. El atributo value contiene el texto que tendr´ la variable asignado
a
en caso de que se seleccione ese bot´n. Por ejemplo, si el visitante selecciona la
o
pel´ıcula del Retorno del Jedi en el mail que recibir´
ıamos tendr´ıamos una l´ ınea
as´
ı:
peli=jedi
Quiz´s parezca un poco lioso, pero una vez que hayas hecho un par de
a
formularios, todo ir´ bien.
a
9.8. Listas de selecci´n
o
Las listas de selecci´n tienen una funci´n parecida a los radio buttons, en
o o
tanto que se nos presentan m´ltiples opciones agrupadas en las que escogemos
u
una. La diferencia es que la lista aparece replegada y no ocupa apenas espacio
en la web, as´ que son utiles cuando tenemos muchas opciones a elegir.
ı ´
La etiqueta que las crea es <select> y tiene etiqueta de cierre. Entre ellas
insertamos las opciones que tenemos con la etiqueta <option>. Pongamos el
mismo ejemplo de antes, el de elegir la pel´
ıcula preferida de Star Wars:
<p>
<label for="peli">Pel´cula preferida:</label><br />
ı
<select name="peli" id="peli">
<option value="hope">A New Hope</option>
<option value="empire">
The Empire Strikes Back</option>
<option value="jedi" selected="selected">
The Return of the Jedi</option>
</select>
</p>
Con selected="selected" indicamos cu´l es la opci´n por defecto. En este
a o
caso, el Retorno del Jedi. Como ves, aqu´ no tenemos el l´ del name y id como
ı ıo
con los botones de selecci´n.
o
9.9. Botones de enviar y reestablecer
Ya hemos visto todos los campos de formulario que podemos crear, ahora
s´lo nos falta comentar dos botones especiales: el de enviar (submit) y el de
o
36
38. reestablecer (reset). Ambos se crean con <input>. El atributo id no tiene
mucho sentido a no ser que usemos CSS para cambiar su aspecto de un modo
en concreto y exclusivo. As´ ımismo, name no nos ser´ muy util si no empleamos
a ´
alg´n tipo de script para tratar la informaci´n. Como nosotros lo mandamos por
u o
correo, no debemos preocuparnos. En value indicaremos el texto que aparezca
en el bot´n.
o
El bot´n de enviar se encarga de mandar la informaci´n del formulario,
o o
seg´n como lo hayamos especificado en <form> (en nuestro caso, manda los
u
datos por e-mail). Simplemente especificamos type="submit":
<input type="submit" value="Enviar" />
El bot´n de reestablecer borra el formulario y vuelve a poner los valores
o
´
por defecto. Util en formularios largos. Lo conseguimos con type="reset":
<input type="reset" value="Borrar" />
Ni que decir tiene que hay que diferenciar bien cu´l bot´n es cu´l y no
a o a
poner textos extra˜os como t´
n ıtulo de los botones. Fastidia mucho que se te
borre todo el formulario por error, creyendo haberle dado al bot´n de enviar.
o
37
40. Cap´
ıtulo 10
Introducci´n al CSS
o
En la parte de XHTML hemos comentado muchas veces que podemos cam-
biar el aspecto de una p´gina web mediante CSS (Cascading Style Sheets). Ahora
a
es el momento de aprender c´mo hacerlo.
o
Me ha costado decidirme sobre c´mo explicar las diferentes propiedades de
o
CSS, pero creo que la mejor manera de aprender sin que se haga muy pesado es
poniendo ejemplos de problemas comunes con los que todos nos topamos, junto
con sus formas soluci´n en CSS. Despu´s de todo, esto no pretende ser una gu´
o e ıa
de referencia con todas las propiedades y todos sus posibles valores1 ;)
10.1. ¿D´nde escribo la parte de CSS?
o
Hay dos opciones para insertar estilos en un documento XHTML. Lo m´s a
normal es hacerlo en un archivo externo (que se llama hoja de estilos) y
enlazarlo desde nuestro documento XHTML. Esto tiene una ventaja muy grande
y es que podemos tener muchas p´ginas enlazando a la misma hoja de estilos.
a
Si m´s adelante queremos cambiar algo, s´lo hemos de modificar un archivo (la
a o
hoja de estilos) y afectar´ a todas las p´ginas. Podemos enlazar una o m´s hojas
a a a
poniendo esto dentro de la cabecera (head):
<link href="nuestra_hoja.css" rel="stylesheet" type="text/css" />
La otra opci´n es escribir la informaci´n referente a los estilos en el mismo
o o
archivo XHTML. Lo podemos hacer escribiendo entre las etiquetas <style>
y </style>, que tambi´n deben ir en la cabecera.
e
Si hacemos las dos cosas a la vez, siempre tienen prioridad las reglas que
est´n dentro de <style>.
e
1 Googleando un poco, podr´s encontrar muchas. Y siempre te queda consultar las especi-
a
ficaciones en W3c.org
39
41. 10.2. Vale, ¿pero c´mo funciona?
o
En una hoja de estilos utilizamos reglas que consisten en elegir selectores
a los que asignamos una serie de propiedades. Por ejemplo, si queremos que
nuestra p´gina web tenga el fondo blanco, las letras grises y use una fuente Arial
a
de 11 p´
ıxeles de tama˜o, escribimos:
n
body {
background-color:#fff;
color: #666;
font-family: Arial, sans-serif;
font-size: 11px;
}
Si te lo est´s preguntando, #fff significa el color blanco y #666 un gris
a
oscuro. M´s adelante veremos c´mo se representan los colores en CSS.
a o
10.3. ¿Selectores?
Los selectores los utilizamos para elegir a qu´ elementos se aplican las
e
propiedades que escribimos. Hay diferentes tipos de selectores, los m´s impor-
a
tantes son los que veremos ahora.
Si queremos elegir una etiqueta, simplemente escribimos su nombre. Por
ejemplo, si queremos establecer propiedades para los enlaces:
a {
...
}
Tambi´n podemos elegir un elemento unico utilizando su atributo id. Para
e ´
ello, empleamos la almohadilla:
#menu {
...
}
Otra cosa que podemos hacer es definir una clase y hacer que muchos el-
ementos la utilicen, escribiendo un punto antes del nombre. Por ejemplo, si
queremos destacar algo:
.importante {
...
}
Luego podr´ ıamos usar esa clase en los p´rrafos que queramos (o cualquier
a
otro elemento), usando el atributo class. De este modo:
40
42. <p class="importante">Bla bla bla</p>
10.4. ¿Qu´ significa eso de Cascading?
e
Cascading significa cascada, y tiene que ver con la herencia. En CSS los
elementos hijos heredan todas las propiedades de sus padres. Por ejemplo, si es-
tablecemos una regla para el elemento table, sus hijos (td entre otros) tambi´n
e
tendr´n esas mismas reglas.
a
Es por esto que si queremos establecer un tipo de fuente para todo el docu-
mento (por ejemplo) debemos indicarlo en el elemento body, porque todo nuestro
contenido heredar´ de ´l.
a e
10.5. ¿Puedo poner comentarios?
Para insertar un comentario dentro de una hoja de estilo o entre <style>
y </style> lo hacemos as´
ı:
/* Esto es un comentario */
Los comentarios de XHTML, que van entre <!-- y --> ya no nos sirven.
10.6. ¿Por qu´ fff significa blanco?
e
En CSS hay varias maneras de indicar un color. Podemos hacerlo en ingl´s,
e
por ejemplo. En lugar de #fff escribimos white y lo solucionamos. El problema
es que as´ es muy inc´modo porque tenemos que aprendernos los nombres de
ı o
cada color. Y puede que exista alg´n color que queramos que no tenga nombre.
u
As´ que normalmente se usa la notaci´n en hexadecimal.
ı o
Los colores en nuestro monitor est´n formados por tres haces de luz: rojo,
a
verde y azul. Se llama sistema RGB (Red Green Blue). Si cogemos un pro-
grama de dibujo, vemos que podemos coger un color indicando el valor de sus
componentes rojo, verde y azul por separado. Este valor puede variar de 0 a
255 (se usan 8 bits para representar este rango). Por ejemplo, si queremos el
amarillo puro, indicamos 255 para el rojo, 255 para el verde y 0 para el azul.
¿Qu´ tiene que ver esto con el sistema hexadecimal? Pues que este rango de
e
valores (0..255) puede ser representado con dos d´ıgitos hexadecimales, que van
desde el 00 hasta el FF. La forma de indicar un color es con #RRGGBB, donde la
almohadilla indica que se trata de un color hexadecimal y RR, GG y BB son los
d´
ıgitos correspondientes al rojo, verde y azul. Entonces nuestro color amarillo
ser´ #ffff00.
ıa
La mayor´ de los colores que usaremos tendr´n por cada componente los
ıa a
mismos d´
ıgitos. Por ejemplo #ff0000 (rojo), #ff00ff (lila) o #000000 (negro).
41
43. As´ que los abreviamos a tres cifras. Entonces #f00 es equivalente a #ff0000.
ı
Sin embargo, colores como #a0a0a0 no pueden ser abreviados.
Para conseguir el color blanco debemos poner todas las componentes a 255,
que ser´ #ffffff y abreviado nos quedar´ #fff.
ıa ıa
La mayor´ de editores de c´digo (X)HTML o de programas de dibujo nos
ıa o
mostrar´n en la paleta el valor del color en hexadecimal. En cualquier caso,
a
siempre podemos obtener el valor de sus componentes por separado y convertirlo
a hexadecimal con una calculadora.
42
44. Cap´
ıtulo 11
Trasteando por primera vez
Para empezar a trastear con CSS, conviene conocer algunas propiedades
sencillas. ¡Empezamos!
11.1. El color de primer plano
La propiedad color hace referencia al foreground color, es decir, al color
que est´ por encima del fondo. Hablando en plata, viene a ser el color del texto.
a
Si queremos hacer que nuestra p´gina tenga las letras de color gris oscuro,
a
simplemente escribimos:
body { color:#666; }
Muy f´cil, ¿no? Que pase el siguiente...
a
11.2. El fondo
Podemos modificar el fondo de un elemento con la propiedad background,
que tiene la siguiente sintaxis:
background: [color] [image] [repeat] [attachment] [position]
El primer par´metro corresponde al color de fondo, los siguientes son rela-
a
tivos a la imagen de fondo.
image: aqu´ indicamos qu´ imagen usaremos de fondo. Por ejemplo,
ı e
url("fondo.gif")
repeat: con esto establecemos si queremos que la imagen se repita o no,
tanto horizontal como verticalmente. Con repeat se repite siempre en
43
45. ambos sentidos (valor por defecto), mientras que con no-repeat no se
repite nunca. Con repeat-x se repite s´lo horizontalmente y con repeat-y
o
lo hace s´lo en vertical.
o
attachment: sirve para indicar si el fondo se queda fijo en el sitio o se
desplaza con el scroll. Es un poco dif´ de explicar, as´ que lo mejor es
ıcil ı
que lo prob´is vosotros mismos: con scroll (valor por defecto) el fondo
e
se desplaza y con fixed se queda siempre en el mismo sitio.
position: indica la posici´n del fondo. Indicamos tanto la posici´n desde
o o
la izquierda como desde arriba (ya sea en p´ıxeles o porcentaje). Los valores
por defecto son 0% 0% que sit´an al fondo en la esquina superior izquierda.
u
Si lo quisieramos en las coordenadas 20,30 (tomando como origen esa
esquina superior izquierda), escribir´
ıamos 20px 30px. Si queremos el fondo
centrado, pues 50% 50%.
Podemos omitir alguna propiedad si queremos. Adem´s, podemos establecer
a
los valores por separado, usando background-color, background-repeat, etc.
Veamos algunos ejemplos para poner fondo a nuestra p´gina:
a
/* s´lo color de fondo */
o
body { background-color: #fff; }
/* color de fondo e imagen en mosaico */
body { background: #fff url("fondo.gif");}
/* imagen fija, centrada y sin repetir, */
/* a modo de "marca de agua" */
body {
background: #fff url("fondo.gif") no-repeat fixed 50% 50%;
}
Hemos explicado de forma bastante detallada la propiedad background, pero
no te malacostumbres. Ahora iremos mucho m´s deprisa, y seguramente te toque
a
buscar m´s informaci´n por tu cuenta :P
a o
11.3. Fuente
Hay varias propiedades que nos permiten jugar con el aspecto del tex-
to. Podemos englobar todas bajo font, pero primero veremos algunas sub-
propiedades.
Lo primero que debemos considerar es que no todos los ordenadores
tienen las mismas fuentes instaladas. Es decir, que mi maravillosa fuente
llamada ”S´per-Chachi-Way.ttf”no tiene por qu´ tenerla mi vecino. Es m´s,
u e a
lo normal es que no la tenga1 . ¿Entonces qu´ hacemos? Usar s´lo fuentes
e o
1 En dise˜ o web, como en los dem´s aspectos de la vida, la Ley de Murphy se suele cumplir.
n a
44
46. “est´ndar”, que tengan la mayor´ de ordenadores. Adem´s, podemos especi-
a ıa a
ficar varias, de forma que si no se tiene la primera, se muestra la segunda, si no
se tiene la segunda, pues la tercera, etc.
A lo que ´
ıbamos, la propiedad que sirve para cambiar la fuente es font-family.
Como acabamos de ver, podemos indicar varias fuentes, teniendo preferencia la
primera. Si el nombre de una fuente tiene espacios en blanco, hay que ponerla
entre comillas. Por ejemplo2 :
font-family: "Trebuchet MS", Arial, sans-serif;
El tama˜ o de la fuente lo controlamos con font-size. Podemos indicar
n
ıxeles (px) o en puntos (pt)3 .
medidas en p´
El tema de la negrita se controla con font-weight asign´ndole bold o
a
normal. La cursiva con font-style, poniendo italic o normal. Si queremos
versales, pues font-variant con small-caps o normal. Como ves, todo muy
intuitivo.
Resumiendo, todo junto quedar´ tal que as´
ıa ı:
background: [style] [variant] [weight] [size] [family]
Algunos ejemplillos:
/* fuente para todo el documento */
body {
font: 11px Arial, Verdana, sans-serif;
color: #666;
}
/* para el ´nfasis fuerte */
e
strong {
font-variant: small-caps;
color: #000;
}
11.4. Efectos en el texto
Adem´s de cambios en la fuente, podemos alterar la forma en la que el texto
a
es presentado. Aqu´ hay unas cuantas:
ı
2 Algunos opinan que la Trebuchet MS se convertir´ pronto en la nueva Comic Sans MS.
a
O sea, la t´
ıpica fuente bonita que todo el mundo usa y que acaba cansando. Yo todav´ no lo
ıa
he hecho.
3 Mentira cochina. Podemos (y muchos opinan que debemos) usar medidas relativas, pero
el tema de la herencia es muy importante en estos casos y yo aqu´ no voy a explayarme. San
ı
Google bendito...
45
47. Para alinear el texto tenemos a text-align, que puede tomar los valores
right (derecha), left (izquierda), center (centrado) o justify (justificado)4 .
As´ que para centrar un p´rrafo:
ı a
p {text-align: center}
Si queremos indentar un p´rrafo, hacemos uso de la propiedad text-indent.
a
Por ejemplo:
p { text-indent: 2em;}
¿Qu´ significa la unidad em? Es una unidad relativa. Lo m´s f´cil es tra-
e a a
bajar con p´ıxeles o con porcentajes, pero en algunos casos conviene utilizar
otras unidades. 1 em equivale al tama˜o de la fuente. As´ si por herencia o por
n ı,
cualquier cosa, el texto se muestra en un tama˜o de fuente mayor, la propor-
n
ci´n de indentado siempre ser´ la misma. Si pusieramos 20px, siempre ser´
o ıa ıa
esa, aunque el tama˜o de fuente sea de 10px o de 32px, por ejemplo.
n
Tambi´n podemos cambiar la decoraci´n del texto con text-decoration.
e o
Puede tomar diversos valores, como none (sin ning´n adorno), underline (sub-
u
rayado)5 , overline (subrayado superior) o line-through (tachado). Si quere-
mos que nuestros links no tengan subrayado, por ejemplo, har´ıamos:
text-decoration: none;
Podemos tambi´n transformar las may´sculas y min´sculas con text-transform.
e u u
Si ponemos lowercase todo se mostrar´ en min´sculas; con uppercase, en
a u
may´sculas; y con capitalize pondremos una letra capital al principio de cada
u
palabra.
En cuanto al espaciado, para el espacio entre palabras usamos word-spacing;
para el de las letras, letter-spacing y para el interlineado, line-height.
Un ejemplo con todo esto, para la etiqueta strong:
strong {
color: #000;
letter-spacing: 0.25em;
text-transform: uppercase;
}
¿Demasiada informaci´n? Quiz´s, pero ten en cuenta que no hay que mem-
o a
orizar todo esto. Ni de co˜a. Lo importante es saber que existe una propiedad
n
que hace tal cosa, no c´mo se llama. Para eso est´n las gu´ de referencia
o a ıas
r´pida, y los editores de CSS.
a
4A mucha gente le gusta montar guerras sagradas acerca de la conveniencia o no de usar
texto justificado. En caso de duda, pregunta a gente c´mo le gusta m´s y asunto solucionado.
o a
5 ¡Cuidado! En una web, si vemos algo subrayado, tendemos a pensar que es un enlace.
46
48. Ap´ndice A
e
Migraci´n r´pida a XHTML
o a
Si ya usabas HTML 4 puedes aprender muy r´pido XHTML, puesto que las
a
bases son las mismas. S´lo hay que tener en cuenta que XHTML deja de lado
o
todo aspecto est´tico y se centra en el contenido y en la sem´ntica. En
e a
lugar de usar una etiqueta para dar un aspecto concreto, usamos etiquetas para
hacer que las palabras signifiquen una cosa u otra. Ahora veremos una serie de
“reglas” a seguir para pasarnos a XHTML. Tambi´n es recomendable leer el
e
cap´
ıtulo 2, donde se explica la estructura de un documento XHTML. Evidente-
mente, no se muestran aqu´ todas las diferencias, pero sirve para hacernos una
ı
idea de qu´ es lo que nos espera1 .
e
A.1. Min´ sculas y comillas, por favor
u
Antes era una pr´ctica com´n escribir las etiquetas en may´scula, para difer-
a u u
enciarlas del c´digo. Por compatibilidad con XML, en XHTML todas las eti-
o
quetas deben ir en min´sculas.
u
Adem´s, todos los atributos tiene que estar entre comillas dobles. Por ejem-
a
plo, si antes ten´
ıamos:
<IMG SRC=icono.gif ALT=icono>
Ahora escribimos:
<img src="icono.gif" alt="Icono" />
1 Diego Lafuente ha escrito art´ıculos muy buenos en su blog minid.net sobre
el tema. Destaca el post titulado “13 pasos para dar el salto”. Pod´is leerlo en
e
http://www.minid.net/archivos/categorias/xhtml/13 leyes de oro para dar el gran paso.php
47
49. A.2. Todas las etiquetas se cierran
Con HTML pod´ ıamos crear p´rrafos con la etiqueta <p> sin necesidad de cer-
a
rarla con </p>. Lo mismo ocurr´ con <li>, por ejemplo. En XHTML ninguna
ıa
etiqueta puede quedar sin cerrar.
Lo de ninguna es literal, y etiquetas que no tienen una de cierre, como
<img>, <br>, etc deben ser cerradas. ¿C´mo lo hacemos? Insertando la barra
o
/. Entonces la etiqueta para insertar un salto de l´
ınea es <br />. El espacio
que hay entre el nombre y la barra es necesario para que navegadores antiguos
reconozcan la etiqueta.
A.3. FONT y ciertos atributos desaparecen
Hemos dicho que XHTML deja de lado la apariencia del documento, ya que
eso es controlado por CSS. Entonces las etiquetas <font> y <basefont> carecen
de sentido.
Adem´s, atributos de algunas etiquetas que hacen referencia al color de
a
las cosas o a im´genes de fondo, tambi´n desaparecen por este motivo. Son
a e
sustituidos por reglas CSS. As´ que sayˆnara a bgcolor y amigos. Lo mismo
ı o
para el atributo align usado en p´rrafos e im´genes.
a a
A.4. B y compa˜´ tambi´n se van
nıa e
Ciertas etiquetas de formato, como <b> (negrita), <i> (cursiva), etc ya no
se usan porque hacen referencia exclusivamente a la apariencia de las pal-
abras. Si queremos dar ´nfasis, utilizamos <em> y para dar ´nfasis m´s fuerte,
e e a
<strong>. Los navegadores suelen mostrarlas como cursiva y negrita, respectiva-
mente (aunque c´mo la representen es lo de menos, ya que lo podemos cambiar
o
con CSS).
A.5. Hay que usar alt y title
XHTML hace hincapi´ en la accesibilidad de un documento, y por eso
e
debemos facilitar atributos de “apoyo” a algunas etiquetas. La etiqueta <img>
dispone del atributo alt que se muestra cuando no se puede cargar la imagen
y al pasar el cursor por encima. Hay que utilizarlo siempre.
Hay un atributo muy similar llamado title que se utiliza en la etiqueta <a>,
entre otras, y sirve para mostrar una descripci´n del sitio al que nos dirigimos.
o
Por ejemplo:
<a href="http://www.google.es" title="Buscador Google">Google</a>
48