Tutorial HTML
Tutorial HTML
marcas para la creación de hipertextos. Por hipertexto entenderemos texto con una
presentación agradable, con inclusión de elementos multimedia (gráficos, video, audio)
y con la presencia de hipervínculos a otros documentos.
Computador
Navegador Web Existen multitud de ellos pero los mas comunes son: (Mozilla
Firefox, Internet Explorer y Opera.
Editor de Texto (Bloc de Notas, Word, WordPad, entre otros) o Editores HTML
(DreamWeaver, NVU, LopeEdit, NotePad++, entre otros).
Una etiqueta será un texto incluido entre los símbolos menor que < y mayor que >. El
texto incluido dentro de los símbolos será explicativo de la utilidad de la etiqueta.
Sintaxis:
<Etiqueta>Elemento(s) Afectado(s) por la etiqueta</Etiqueta>
Por Ejemplo: <b>Hola Mundo</b>
La Frase “Hola Mundo” esta entre las etiquetas (<b> </b>) Negrita o Bold (en ingles)
cuyo resultado es “Hola Mundo” en negrita.
Existe normalmente una etiqueta de inicio y otra de fin, la de fin contendrá el mismo
texto que la de inicio añadiéndole al principio una barra inclinada /. El efecto que define
la etiqueta tendrá validez para todo lo que este incluido entre las etiquetas de inicio y
fin, ya sea texto plano o otras etiquetas HTML.
Algunas etiquetas no necesitarán la de fin, serán aquellas en las que el final este
implícito, por ejemplo <P> párrafo, <BR> salto de línea ó <IMG> inclusión de una
imagen. Definen un efecto que se producirá en un punto determinado sin afectar a otros
elementos.
Un documento HTML está definido por una etiqueta de apertura <HTML> y una
etiqueta de cierre </HTML>. Dentro de este se dividen dos partes fundamentales la
cabecera la cabecera de un documento HTML está delimitado por las etiquetas
<HEAD> y </HEAD>, en esta se incluirán las definiciones generales que afectarán a
todo el documento. Como el titulo el cual debe ir incluido en la etiqueta
<TITLE>Titulo de la página </TITLE>, también:
El cuerpo, esta delimitado por la etiqueta <BODY>. En ella se incluirán todas las
instrucciones HTML y el texto que forman el documento
<HTML>
<HEAD> <TITLE> Titulo de la Pagina </TITLE>
Definiciones de la cabecera
</HEAD>
<BODY>
Instrucciones HTML
</BODY>
</HTML>
Ejemplo:
<head>
<title>Mi primera pagina</title>
</head>
Atributos de <BODY>
Se escribirá así:
<BODY>
texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto
</BODY>
La etiqueta BODY presenta algunos atributos que son de definición global para todo el
documento, estos definirán los colores y el fondo del documento HTML.
Sintaxis: background=”ruta_imagen”
Sintaxis: bgcolor=”color”
Ejemplo: bgcolor=”red”
text: Especificará el color del texto normal dentro del documento HTML. Por defecto
será normalmente negro.
link: Indicará el color que tendrán los hiperenlaces que no han sido accedidos. Por
defecto será azul.
Sintaxis: link=”color”
Ejemplo: < body link=”red”>
Nota: En donde "color" puede venir expresado mediante el nombre del color en ingles o
mediante el código hexadecimal del color.
vlink: Color de los enlaces que ya han sido visitados. Por defecto es un color azul más
oscuro.
Sintaxis: vlink=”color”
Ejemplo: vlink=”yellow”
Nota: pixels es el número de pixels que se quiere mover cada margen hacia el interior
de la página. Estos parámetros también son accesibles desde instrucciones de estilo.
Para definir distintos tamaños de letra, en HTML se utiliza el elemento lleno <Hx>
</Hx> donde x es un número que puede variar entre 1 y 6, siendo 1 el tamaño mayor.
Se escribirán así:
Otra forma de cambiar los tamaños de letra es utilizar el elemento <FONT > con el
atributo VALOR, que es un número entre 1 y 7. El valor por defecto del texto es 3. La
gran diferencia de esta notación respecto a la anterior es que no se produce un salto de
párrafo después de cada cambio, por lo que pueden hacerse cosas como esta:
<FONT SIZE=3>A</font><FONT SIZE=4>A</font><FONT SIZE=5>A</font>
AAA AAAAAA
FACE. Este atributo permite forzar el tipo de letra que el diseñador de la página quiere
que vea el cliente, sin importar el que por defecto tenga establecido el visualizador.
Si escribes
Se verá:
Por supuesto, este atributo es compatible con todos los demás ya conocidos, como color
y tamaño. Por ejemplo, si escribes
Se puede controlar el color del texto utilizando el elemento <FONT> con el atributo
COLOR="xxx", donde "xxx" es el nombre en inglés del color que se desea. Hay que
tener presente que algunos no se verán o se verán mal si la máquina no soporta, por lo
menos, 256 colores.
Si escribes:
Se verá asi:
Texto ROJO
Texto AZUL
Texto AZUL MARINO
Para definir los saltos de párrafo se utiliza el elemento lleno <P> </P> (por Paragraph).
No suele utilizarse el cierre </P>, ya que el texto continuará normalmente hasta que
encuentre otro salto <P>
Como puede verse, hay un línea en blanco entre los dos bloques. El efecto del elemento
<BR> (por BReak) es el mismo, pero sin esa línea vacía.
Se escribirá así:
Texto 1 Texto 1 Texto 1 Texto 1 Texto 1 Texto 1 Texto 1 Texto 1 Texto 1 Texto 1
Texto 2 Texto 2 Texto 2 Texto 2 Texto 2 Texto 2 Texto 2 Texto 2
Un elemento que se comporta de forma parecida a <BR> es <DIV> pero que admite los
mismos atributos que <P>: ALIGN=LEFT ALIGN=RIGHT y ALIGN=CENTER
Se escribe así:
<DIV ALIGN=LEFT>
texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1
</DIV>
<DIV ALIGN=RIGHT>
texto2 texto2 texto2 texto2 texto2 texto2 texto2 texto2 texto2
< /DIV>
<DIV ALIGN=CENTER>
texto3 texto3 texto3 texto3 texto3 texto3 texto3 texto3 texto3
</DIV>
Otro elemento que es casi igual que <DIV> pero que no admite atributos de alineado, y
no produce separación de párrafo ni de línea es <SPAN>.
Se escribe así:
<SPAN>
texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1
texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1 texto1
</SPAN>
Se escribirá así:
<BLOCKQUOTE>
texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto
<BLOCKQUOTE>
texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto
</BLOCKQUOTE>
</BLOCKQUOTE>
En este ejemplo hay un anidamiento, y por tanto, debe haber dos cierres
</BLOCKQUOTE> al final
Otro separador de bloques de texto es el elemento vacío <HR> (por Horizontal Rule).
Así:
<HR NOSHADE>
El valor del atributo WIDTH se puede expresar, como en el ejemplo anterior, en número
de puntos (píxels), o en tantos por ciento referidos al ancho total de la ventana. Así:
<HR WIDTH=80% SIZE=5>
El resultado será:
Además se puede indicar su posición respecto a los márgenes de la ventana con los
atributos ALIGN=CENTER (por defecto) ALIGN=LEFT y ALIGN=RIGHT. Por
ejemplo:
<HR WIDTH=80% SIZE=5 ALIGN=LEFT>
El resultado será:
O bien:
El resultado será:
Hay otro elemento, aparecido en la versión 6 de Netscape, que permite rodear un texto
con un marco, y opcionalmente ponerle una etiqueta. Se trata del elemento:
<FIELDSET>. Recuerda que si no tienes la versión adecuada de navegador, en los
siguientes ejemplos sólo verás el texto, pero no los enmarcados.
Si se escribe:
<FIELDSET>
Esto es una prueba de enmarcado
</FIELDSET>
Se obtiene:
<FIELDSET>
<LEGEND>Esto es una etiqueta</LEGEND>
Esto es una prueba de enmarcado
</FIELDSET>
Se obtiene:
<FIELDSET>
<LEGEND ALIGN=CENTER> Esto es una etiqueta </LEGEND>
Esto es una prueba de enmarcado
</FIELDSET>
Se obtiene:
Por supuesto, dentro del recuadro generado por <FIELDSET> se puede poner
cualquier cosa: formularios, imágenes, texto, etc.
Posiblemente ya te habrás dado cuenta de que, cuando escribes un texto con tu editor, a
la hora de ver lo hecho con el visualizador, algunas cosas no están como tú las pusiste...
Como por ejemplo poner dos o tres espacios en blanco entre palabras, o intentar
encolumnar los datos de una pequeña tabla: ¡acaba todo junto y en la misma línea!
Este efecto se puede eliminar con el elemento lleno <PRE>. Al texto que va dentro del
elemento PRE se le pueden aplicar todos los elementos que se quiera, siempre que sean
elementos que no alteren la posición del texto. Por ejemplo si utilizas el elemento <H>,
se rompería el preformateo pero no ocurrirá lo mismo con <FONT SIZE>. Por defecto,
los textos preformateados se ven con tipo de letra "curier", es decir de paso fijo y los no
preformateados en "Times New Roman". Estos tipos son configurables en el
visualizador.
Se escribirá así:
<PRE>
8 9 10 11 12 13 14 texto preformateado.
15 16 17 18 19 20 21
</PRE>
8 9 10 11 12 13 14 texto preformateado.
15 16 17 18 19 20 21
El navegador, por defecto, elimina varios espacios en blanco y los convierte en uno
solo. Si lo que deseas es separar una palabra de otra más de un espacio, se puede
recurrir a una instrucción especial que le indica esto al navegador, pero hay que darla
codificada; funciona como un avance de carro, y aunque en pantalla cumple su objetivo,
cuando se imprime la página, no todas las impresoras son capaces de interpretarlo
correctamente. Se escribe:   y como alias se utiliza:
Con Netscape 3.0 se ha implementado un nuevo elemento que permite definir espacios
en blanco sin utilizar el elemento <PRE>
Se trata del elemento <SPACER>. Este elemento puede ir acompañado de los atributos
TYPE y SIZE y se puede utilizar en cualquier zona de una página, pero donde más se
aprecia su efecto es en las columnas. Se escibirá asi:
<MULTICOL COLS=2>
<SPACER TYPE=HORIZONTAL SIZE=35>
texto texto texto texto texto texto texto texto texto texto texto
texto
<P>
<SPACER TYPE=HORIZONTAL SIZE=35>
texto texto texto texto texto texto texto texto texto texto texto
texto
<SPACER TYPE=VERTICAL SIZE=35>
texto texto texto texto texto texto texto texto texto texto texto
texto
</MULTICOL>
Y se ve así:
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto
Fíjate en que entre las dos instrucciones con tipo horizontal hay un elemento <P>. En
efecto, es necesario indicarle a <SPACER> donde termina el párrafo para que ejecute la
siguiente instrucción del mismo tipo. Este elemento no funciona con el navegador de
Microsoft.
Este es un nuevo elemento que sólo funciona con Netscape 3.0 o superior.
Por supuesto, dentro de las columnas son válidos todos los elementos del lenguaje,
como tamaños de letra, imágenes, links, etc., etc. Incluso dentro de una columna se
pueden anidar otras columnas.
Se escibirá asi:
Una o varias líneas de texto, pueden estar centradas respecto a los márgenes de la
ventana. Esto afecta sólo al texto que hay entre <CENTER> y </CENTER>, pero no a
todo el párrafo. Por ejemplo:
texto texto texto texto texto texto texto texto texto texto texto
texto
<CENTER>texto centrado texto centrado</CENTER>
texto texto texto texto texto texto texto texto texto texto texto
texto
Se verá:
texto texto texto texto texto texto texto texto texto txto texto texto texto texto texto texto
texto
Esto, además de a texto sólo, se puede aplicar a una tabla, una imagen o cualquier otra
cosa.
Quedan algunos otros elementos que modifican el aspecto del texto. Algunos,
aparentemente, hacen la misma cosa, y otros no funcionan con el visualizador de
Netscape, por lo que se omiten aquí.
Texto en negrita:
<B>Texto en negrita</B>
Texto realzado:
<STRONG>Texto realzado</STRONG>
Texto en itálica:
<I>Texto en itálica</I>
Texto con énfasis:
<EM>Texto con énfasis</EM>
Texto ejemplo de código:
<CODE>Texto ejemplo de código</CODE>
Texto teletipo:
<TT>Texto teletipo</TT>
Texto subrayado:
<U>Texto subrayado</U>
Texto tachado:
<STRIKE>Texto tachado</STRIKE>
Texto de dirección:
<ADDRESS>Texto de dirección</ADDRESS>
Texto intermitente
<BLINK>Texto intermitente</BLINK>
Texto superíndice
Texto normal
<SUP>Texto Superíndice</SUP>
Texto subíndice Texto nomal
<SUB>Texto Subíndice</SUB>
Texto grande
<BIG>Texto grande</BIG>
Texto pequeño
<SMALL>Texto pequeño</SMALL>
En los navegadores de última generación se ha implementado un efecto que permite
incluir explicaciones ocultas que aparecen al pasar el ratón por encima, pero sin cambiar
de página ni abrir ninguna ventana nueva. Por ejemplo, si escribes:
1. Primera linea
2. Segunda linea
Se escribe:
<OL>
<LI>Primera linea
<LI>Segunda linea
</OL>
Fíjate en que los elementos <LI> no tienen cierre. Terminan cuando aparece otro igual o
se cierra la lista.
Se escribe:
<UL>
<LI>Primera línea
<LI>Segunda línea
</UL>
En este caso los números han sido sustituidos por unos puntos gruesos. Esa es la
apariencia por defecto; se puede cambiar usando el atributo TYPE con tres valores (el
valor por defecto es DISC). Con el valor CIRCLE se verá:
o Primera linea
o segunda linea
Se escribe:
<UL TYPE=CIRCLE>
<LI>Primera linea
<LI>Segunda linea
</UL>
Primera linea
segunda linea
Se escribe:
<UL TYPE=SQUARE>
<LI>Primera linea
<LI>Segunda linea
</UL>
Las listas ordenadas no sólo se pueden ordenar con números. También se pueden
utilizar letras y numeración romana tanto en mayúsculas como minúsculas. Para esto se
utiliza el atributo TYPE del elemento <OL> con los siguientes valores: TYPE=1 (por
defecto) para números, TYPE=A para letras mayúsculas, TYPE=a para letras
minúsculas, TYPE=I para numeración romana en mayúsculas y TYPE=i para
numeración romana en minúsculas.
A. Primera linea
B. Segunda linea
C. Tercera linea
D. Cuarta linea
Se escribe:
<OL TYPE=A>
<LI>Primera linea
<LI>Segunda linea
<LI>Tercera linea
<LI>Cuarta linea
</OL>
Esto es una lista ordenada con letras minúsculas:
a. Primera linea
b. Segunda linea
c. Tercera linea
d. Cuarta linea
Se escribe:
<OL TYPE=a>
<LI>Primera linea
<LI>Segunda linea
<LI>Tercera linea
<LI>Cuarta linea
</OL>
Esto es una lista ordenada con numeración romana en mayúsculas:
I. Primera linea
II. Segunda linea
III. Tercera linea
IV. Cuarta linea
Se escribe:
<OL TYPE=I>
<LI>Primera linea
<LI>Segunda linea
<LI>Tercera linea
<LI>Cuarta linea
</OL>
Esto es una lista ordenada con numeración romana en minúsculas:
i. Primera linea
ii. Segunda linea
iii. Tercera linea
iv. Cuarta linea
Se escribe:
<OL TYPE=i>
<LI>Primera linea
<LI>Segunda linea
<LI>Tercera linea
<LI>Cuarta linea
</OL>
En algunos casos puede interesarnos que la lista no comience por el número 1 (por
ejemplo si es una lista que continúa en otra página). Se puede conseguir con el atributo
START combinado con TYPE.
Esto es una lista ordenada con letras mayúsculas y que comienza por la E:
E. Primera linea
F. Segunda linea
G. Tercera linea
H. Cuarta linea
Se escribe:
El número que pones en el atributo START indica en que número o letra comenzará la
lista. la E es la quinta letra.
Esto es un menú:
Primera linea
Segunda linea
Se escribe:
<MENU>
<LI>Primera línea
<LI>Segunda linea
</MENU>
La diferencia entre un menú y una lista desordenada, es que las líneas en la lista
desordenada comienzan en el margen izquierdo y las del menú unas posiciones más a la
derecha (aunque eso depende del visualizador, con Netscape se ven igual).
Esto es un directorio:
Primera linea
Segunda linea
Se escribe:
<DIR>
<LI>Primera linea
<LI>Segunda linea
</DIR>
Ocurre lo mismo que con el menú, con Netscape no se aprecia diferencia.
Se escribe:
<UL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
</UL>
Se escribe:
<UL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
</UL>
Se escribe:
<UL>
<UL TYPE=DISC>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
</UL>
</UL>
Se escribe:
<UL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
<UL>
<LI>Linea de texto 3.1
<LI>Linea de texto 3.2
<UL>
<LI>Linea de texto 3.2.1
<LI>Linea de texto 3.2.2
<UL>
<LI>Linea de texto 3.2.2.1
<LI>Linea de texto 3.2.2.2
</UL>
</UL>
</UL>
<LI>Linea 4 de texto
</UL>
Ordenadas
Ordenada simple
1. Linea de texto 1
2. Linea de texto 2
3. Linea de texto 3
Se escribe:
<OL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
</OL>
Se escribe:
<OL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
<OL>
<LI>Linea de texto 3.1
<LI>Linea de texto 3.2
<OL>
<LI>Linea de texto 3.2.1
<LI>Linea de texto 3.2.2
<OL>
<LI>Linea de texto 3.2.2.1
<LI>Linea de texto 3.2.2.2
</OL>
</OL>
</OL>
<LI>Linea de texto 4
</OL>
Se escribe:
<OL TYPE=I>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
<OL TYPE=i>
<LI>Linea de texto 3.1
<LI>Linea de texto 3.2
<OL TYPE=i>
<LI>Linea de texto 3.2.1
<LI>Linea de texto 3.2.2
<OL TYPE=i>
<LI>Linea de texto 3.2.2.1
<LI>Linea de texto 3.2.2.2
</OL>
</OL>
</OL>
<LI>Linea de texto 4
</OL>
Se escribe:
<OL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
<OL>
<LI>Linea de texto 3.1
<LI>Linea de texto 3.2
<UL TYPE=SQUARE>
<LI>Linea de texto 3.2.1
<LI>Linea de texto 3.2.2
<UL TYPE=CIRCLE>
<LI>Linea de texto 3.2.2.1
<LI>Linea de texto 3.2.2.2
</UL>
</UL>
</OL>
<LI>Linea de texto 4
</OL>
Se escribe:
<OL>
<LI>Linea de texto 1
<LI>Linea de texto 2
<LI>Linea de texto 3
<OL>
<LI>Linea de texto 3.1
<LI>Linea de texto 3.2
<DL>
<DD>Linea de texto 3.2.1
<DD>Linea de texto 3.2.2
<DL>
<DD>Linea de texto 3.2.2.1
<DD>Linea de texto 3.2.2.2
</DL>
</DL>
</OL>
<LI>Linea de texto 4
</OL>
Las tablas son sin duda uno de los elementos más potentes del HTML. Con pocos
elementos se pueden conseguir efectos espectaculares. En el interior de las celdas de
una tabla, que pueden ser con borde visible o invisible, se puede poner cualquier cosa:
texto de cualquier tamaño y color, imágenes, links... Por supuesto, además de permitir
cualquier contenido, tienen sus propios atributos de alineación tanto horizontal como
vertical, y atributos de dimensionado. Por defecto se autodimensionan, es decir, se
adaptan en tamaño a su contenido, pero también es posible definirlo de forma fija.
Una cabecera <TH> es los mismo que una celda de datos <TD> pero de forma
automática el texto de su contenido recibe los atributos de negrita y centrado. Sólo es
posible definirlas al principio de las filas, de las columnas o de ambas a la vez.
He aquí una tabla-resumen de los elementos utilizados y los atributos que admite cada
uno:
TABLE TR TD TH CAPTION
BORDER X - - - -
ROWSPAN - - X X -
COLSPAN - - X X -
ALIGN - X X X X
VALIGN - - X - -
WIDTH X - X - -
HEIGTH X - X - -
CELLPADDING X - - - -
CELLSPACING X - - - -
NOWRAP - - X - -
EVENTS X X X X -
Resumen de tablas
Este atributo sirve para definir que bordes del marco de la tabla serán visibles:
<TABLE FRAME="valor"> ... </TABLE> donde valor puede ser:
Y este otro sirve para definir que bordes de la tabla serán visibles: <TABLE
RULES="valor"> ... </TABLE> donde valor puede ser:
none - Ninguna línea de división (por defecto).
groups - Sólo aparecen líneas de división entre grupos de filas y grupos de
columnas.
cols - Sólo aparecerán líneas de división entre filas.
rows - Sólo aparece líneas de división entre columnas.
Ejemplos de tablas
Tabla básica de 3x2
A BC
D E F
<TABLE BORDER>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
Item 1 Item 3
Item 2
Item 4 Item 5
<TABLE BORDER>
<TR>
<TD>Item 1</TD>
<TD ROWSPAN=2>Item 2</TD>
<TD>Item 3</TD>
</TR>
<TR>
<TD>Item 4</TD> <TD>Item 5</TD>
</TR>
</TABLE>
Item 2 Item 3 Item 4
Item 1
Item 5 Item 6 Item 7
<TABLE BORDER>
<TR>
<TD ROWSPAN=2>Item 1</TD>
<TD>Item 2</TD> <TD>Item 3</TD> <TD>Item 4</TD>
</TR>
<TR>
<TD>Item 5</TD> <TD>Item 6</TD> <TD>Item 7</TD>
</TR>
</TABLE>
Item 1 Item 2
Item 3 Item 4 Item 5
<TABLE BORDER>
<TR>
<TD>Item 1</TD>
<TD COLSPAN=2>Item 2</TD>
</TR>
<TR>
<TD>Item 3</TD> <TD>Item 4</TD> <TD>Item 5</TD>
</TR>
</TABLE>
Head1 Head2
A B C D
E F G H
<TABLE BORDER>
<TR>
<TH COLSPAN=2>Head1</TH>
<TH COLSPAN=2>Head2</TH>
</TR>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD> <TD>D</TD>
</TR>
<TR>
<TD>E</TD> <TD>F</TD> <TD>G</TD> <TD>H</TD>
</TR>
</TABLE>
Head1 Head2
Head 3 Head 4 Head 5 Head 6
A B C D
E F G H
<TABLE BORDER>
<TR>
<TH COLSPAN=2>Head1</TH>
<TH COLSPAN=2>Head2</TH>
</TR>
<TR>
<TH>Head 3</TH> <TH>Head 4</TH>
<TH>Head 5</TH> <TH>Head 6</TH>
</TR>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD> <TD>D</TD>
</TR>
<TR>
<TD>E</TD> <TD>F</TD> <TD>G</TD> <TD>H</TD>
</TR>
</TABLE>
Cabeceras laterales
<TR ALIGN=CENTER>
<TH>ROWSPAN</TH><TD>-</TD><TD>-</TD><TD>X</TD><TD>X</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>COLSPAN</TH><TD>-</TD><TD>-</TD><TD>X</TD><TD>X</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>ALIGN</TH><TD>-</TD><TD>X</TD><TD>X</TD><TD>X</TD><TD>X</TD>
</TR>
<TR ALIGN=CENTER>
<TH>VALIGN</TH><TD>-</TD><TD>-</TD><TD>X</TD><TD>-</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>WIDTH</TH><TD>X</TD><TD>-</TD><TD>X</TD><TD>-</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>HEIGTH</TH><TD>X</TD><TD>-</TD><TD>X</TD><TD>-</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>CELLPADDING</TH><TD>X</TD><TD>-</TD><TD>-</TD><TD>-</TD><TD>-</TD>
</TR>
<TR ALIGN=CENTER>
<TH>CELLSPACING</TH><TD>X</TD><TD>-</TD><TD>-</TD><TD>-</TD><TD>-</TD>
</TR>
</TABLE>
</CENTER>
Media
Altura Peso
Hombres 1.9 85
Sexo
Mujeres 1.7 60
<TABLE BORDER>
<TR> <TD><TH ROWSPAN=2></TH>
<TH COLSPAN=2>Media</TH></TD>
</TR>
<TR> <TD><TH>Altura</TH><TH>Peso</TH></TD>
</TR>
<TR> <TH ROWSPAN=2>Sexo</TH>
<TH>Hombres</TH><TD>1.9</TD><TD>85</TD>
</TR>
<TR> <TH>Mujeres</TH><TD>1.7</TD><TD>60</TD>
</TR>
</TABLE>
12
A
34
C D
<TABLE BORDER>
<TR>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>A</TD>
<TD>1</TD>
<TD>2</TD>
</TR>
<TR>
<TD>3</TD>
<TD>4</TD>
</TR>
<TR>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>C</TD>
<TD ALIGN=center ROWSPAN=2 COLSPAN=2>D</TD>
</TR>
<TR>
</TR>
</TABLE>
Item 1 Item 3
Item 2
Item 4 Item 5
<TABLE>
<TR> <TD>Item 1</TD> <TD ROWSPAN=2>Item 2</TD> <TD>Item
3</TD>
</TR>
<TR> <TD>Item 4</TD> <TD>Item 5</TD>
</TR>
</TABLE>
Aquí no es visible el borde de las celdas debido a que se ha omitido el atributo
BORDER del elemento <TABLE>. La omisión o no es equivalente a parametrizarlo; se
consigue lo mismo así: BORDER=0, y como ya habrás deducido, el valor de BORDER
puede ser variable. Mira el siguiente ejemplo:
Dimensionado de celdas
A B C
D E F
<TABLE BORDER CELLPADDING=10 CELLSPACING=0>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
A B C
D E F
<TABLE BORDER CELLPADDING=0 CELLSPACING=10>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
A B C
D E F
<TABLE BORDER CELLPADDING=10 CELLSPACING=10>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
A B C
D E F
<TABLE BORDER=5 CELLPADDING=10 CELLSPACING=10>
<TR>
<TD>A</TD> <TD>B</TD> <TD>C</TD>
</TR>
<TR>
<TD>D</TD> <TD>E</TD> <TD>F</TD>
</TR>
</TABLE>
Alineación, títulos y subtablas
Líneas múltiples en un tabla
Título arriba
Enero Febrero Marzo
Celda 1 Celda 2 Celda 3
<TABLE BORDER>
<CAPTION ALIGN=top>Titulo arriba</CAPTION>
<TR>
<TH>Enero</TH>
<TH>Febrero</TH>
<TH>Marzo</TH>
</TR>
<TR>
<TD>Celda 1</TD>
<TD>Celda 2</TD>
<TD>Celda 3</TD>
</TR>
</TABLE>
Enero Febrero Marzo
Celda 1 Celda 2 Celda 3
Título abajo
<TABLE BORDER>
<CAPTION ALIGN=bottom>Titulo abajo</CAPTION>
<TR>
<TH>Enero</TH>
<TH>Febrero</TH>
<TH>Marzo</TH>
</TR>
<TR>
<TD>Celda 1</TD>
<TD>Celda 2</TD>
<TD>Celda 3</TD>
</TR>
</TABLE>
3
1 2 A B
C D
4 56
<TABLE BORDER>
<TR> <!-- ROW 1, TABLE 1 -->
<TD>1</TD>
<TD>2</TD>
<TD>3
<TABLE BORDER>
<TR> <!-- ROW 1, TABLE 2 -->
<TD>A</TD>
<TD>B</TD>
</TR>
<TR> <!-- ROW 2, TABLE 2 -->
<TD>C</TD>
<TD>D</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR> <!-- ROW 2, TABLE 1 -->
<TD>4</TD>
<TD>5</TD>
<TD>6</TD>
</TR>
</TABLE>
Celda 1 2
Celda 3 4
<TABLE BORDER WIDTH="50%">
<TR><TD>Celda 1</TD><TD>2</TD>
</TR>
<TR><TD>Celda 3</TD><TD>4</TD>
</TR>
</TABLE>
WIDTH=100% Celda 2
3 Celda 4
<TABLE BORDER WIDTH="100%">
<TR><TD>WIDTH=100%</TD><TD>Celda 2</TD>
</TR>
<TR><TD>3</TD><TD>Celda 4</TD>
</TR>
</TABLE>
HEIGHT=25% Item 2
3 4
<THEAD valign="top">
<TR>
<TH>Columna1</TH>
<TH>Columna2</TH>
<TH>Columna3</TH>
<TH>Columna4</TH>
<TH>Columna5</TH>
<TH>Columna6</TH>
<TH>Columna7</TH></TR>
<TBODY>
<TR><TD>C1L1<TD>C2L1<TD>C3L1<TD>C4L1<TD>C5L1<TD>C6L1<TD>C7L1</TR>
<TR><TD>C1L2<TD>C2L2<TD>C3L2<TD>C4L2<TD>C5L2<TD>C6L2<TD>C7L2</TR>
<TR><TD>C1L3<TD>C2L3<TD>C3L3<TD>C4L3<TD>C5L3<TD>C6L3<TD>C7L3</TR>
<TR><TD>C1L4<TD>C2L4<TD>C3L4<TD>C4L4<TD>C5L4<TD>C6L4<TD>C7L4</TR>
<TBODY>
<TR><TD>C1L5<TD>C2L5<TD>C3L5<TD>C4L5<TD>C5L5<TD>C6L5<TD>C7L5</TR>
<TR><TD>C1L6<TD>C2L6<TD>C3L6<TD>C4L6<TD>C5L6<TD>C6L6<TD>C7L6</TR>
</TABLE>
Como ya has podido ver, muchos de los efectos de última generación mostrados no
funcionan igual, o no funcionan en absoluto con todos los navegadores. ¿Qué hacer
entonces para conseguir tablas cuyas líneas de bordes se vean siempre bien? Pues la
única solución es usar una tabla sin bordes. Sí, ya sé que lo que buscas no es eso, pero si
utilizando atributos de tabla para poner líneas de bordes donde queramos hay problemas
con algunos navegadores, la solución es utilizar otros recursos del HTML que sean
admitidos por todos. No es ninguna solución mágica: solamente tienes que crear un
gráfico con un punto (preferiblemente cuadrado) del color y grosor que quieras dar a tus
líneas... y listo.
Supongamos que queremos conseguir con una tabla representar un recuadro con bordes
rojos. Para ello, utilizando cualquier editor de gráficos creamos un fichero que contenga
un punto de color rojo. Solamente uno, será casi invisible. No necesitamos más. Le
llamaremos rojo.gif
Como puedes ver, el truco consiste en definir celdas alrededor de la celda que lleva el
texto. Estas celdas que rodean a la principal solamente contienen el fichero gráfico con
el punto. Para conseguir que aparezcan las líneas, sólo hay que "estirar" el punto
contenido en nuestro fichero gráfico rojo.gif. Esto nos permite "dibujar" las líneas que
se quieran y donde se quieran, sin problemas de compatibilidad, ya que estos atributos
del elemento <IMG> son completamente estandarizados (por lo menos de momento).
Fíjate en que además de atributos propios del elemento IMG también se utiliza una
instrucción de estilo: width="1px" para asegurar un grosor mínimo de la línea. Este es
el aspecto de la misma tabla con los bordes visibles:
Horizontal arriba
Vertical Ejemplo de tabla con Vertical
izquierda bordes compatibles derecha
Horizontal abajo
La codificación de estos colores está basada en mezclas cromáticas RGB (RED GREEN
BLUE), es decir, se mezclan ciertas cantidades de los tres colores básicos (rojo verde y
azul), para conseguir el color deseado. La cantidad de cada color está definida por el
código que utilizamos, que tiene seis dígitos en hexadecimal. Si los cortamos en 3
grupos de dos de izquierda a derecha, obtendremos la cantidad (en hexadecimal) de
cada color.
La sintaxis para cambiar el fondo de la página (background) a color rojo es: <BODY
BGCOLOR=#FF0000> y para dar color al texto, ver la página Texto de colores. Para
combinaciones generales de colores, ver el ejemplo de control de colores.
White rgb=#FFFFFF
Red rgb=#FF0000
Green rgb=#00FF00
Blue rgb=#0000FF
Magenta rgb=#FF00FF
Cyan rgb=#00FFFF
Yellow rgb=#FFFF00
Black rgb=#000000
Aquamarine rgb=#70DB93
Baker's Chocolate rgb=#5C3317
Blue Violet rgb=#9F5F9F
Brass rgb=#B5A642
Bright Gold rgb=#D9D919
Brown rgb=#A62A2A
Bronze rgb=#8C7853
Bronze II rgb=#A67D3D
Cadet Blue rgb=#5F9F9F
Cool Copper rgb=#D98719
Copper rgb=#B87333
Coral rgb=#FF7F00
Corn Flower Blue rgb=#42426F
Dark Brown rgb=#5C4033
Dark Green rgb=#2F4F2F
Dark Green Copper rgb=#4A766E
Dark Olive Green rgb=#4F4F2F
Dark Orchid rgb=#9932CD
Dark Purple rgb=#871F78
Dark Slate Blue rgb=#6B238E
Dark Slate Grey rgb=#2F4F4F
Dark Tan rgb=#97694F
Dark Turquoise rgb=#7093DB
Dark Wood rgb=#855E42
Dim Grey rgb=#545454
Dusty Rose rgb=#856363
Feldspar rgb=#D19275
Firebrick rgb=#8E2323
Forest Green rgb=#238E23
Gold rgb=#CD7F32
Goldenrod rgb=#DBDB70
Grey rgb=#C0C0C0
Green Copper rgb=#527F76
Green Yellow rgb=#93DB70
Hunter Green rgb=#215E21
Indian Red rgb=#4E2F2F
Khaki rgb=#9F9F5F
Light Blue rgb=#C0D9D9
Light Grey rgb=#A8A8A8
Light Steel Blue rgb=#8F8FBD
Light Wood rgb=#E9C2A6
Lime Green rgb=#32CD32
Mandarian Orange rgb=#E47833
Maroon rgb=#8E236B
Medium Aquamarine rgb=#32CD99
Medium Blue rgb=#3232CD
Medium Forest Green rgb=#6B8E23
Medium Goldenrod rgb=#EAEAAE
Medium Orchid rgb=#9370DB
Medium Sea Green rgb=#426F42
Medium Slate Blue rgb=#7F00FF
Medium Spring Green rgb=#7FFF00
Medium Turquoise rgb=#70DBDB
Medium Violet Red rgb=#DB7093
Medium Wood rgb=#A68064
Midnight Blue rgb=#2F2F4F
Navy Blue rgb=#23238E
Neon Blue rgb=#4D4DFF
Neon Pink rgb=#FF6EC7
New Midnight Blue rgb=#00009C
New Tan rgb=#EBC79E
Old Gold rgb=#CFB53B
Orange rgb=#FF7F00
Orange Red rgb=#FF2400
Orchid rgb=#DB70DB
Pale Green rgb=#8FBC8F
Pink rgb=#BC8F8F
Plum rgb=#EAADEA
Quartz rgb=#D9D9F3
Rich Blue rgb=#5959AB
Salmon rgb=#6F4242
Scarlet rgb=#8C1717
Sea Green rgb=#238E68
Semi-Sweet Chocolate rgb=#6B4226
Sienna rgb=#8E6B23
Silver rgb=#E6E8FA
Sky Blue rgb=#3299CC
Slate Blue rgb=#007FFF
Spicy Pink rgb=#FF1CAE
Spring Green rgb=#00FF7F
Steel Blue rgb=#236B8E
Summer Sky rgb=#38B0DE
Tan rgb=#DB9370
Thistle rgb=#D8BFD8
Turquoise rgb=#ADEAEA
Very Dark Brown rgb=#5C4033
Very Light Grey rgb=#CDCDCD
Violet rgb=#4F2F4F
Violet Red rgb=#CC3299
Wheat rgb=#D8D8BF
Yellow Green rgb=#99CC32
El siguiente es sin duda el elemento más importante del HTML, ya que permite
realmente "navegar" por uno o varios documentos, que pueden residir en cualquier
parte, pareciéndonos que siempre estamos en el mismo; a esto se le llama hipertexto ya
que con esta posibilidad, en realidad, nuestro documento puede ser infinito... En efecto,
para la persona que está leyendo sobre un determinado tema, no hay diferencias
ostensibles que le hagan notar dónde está el documento que lee. Para el lector, todo
parece un mismo documento, cuando en realidad, probablemente el conjunto de lo que
lee está repartido por medio mundo, o en un plano más modesto, el documento leído
puede estar compuesto en realidad por varios cientos de páginas que "saltan" de unas a
otras sin notarlo.
Todo esto lo consigue el elemento <A> (por Anchor, en inglés = ancla o punto de
anclaje). En lo sucesivo le llamaremos enlace o sinplemente link (en inglés
link=eslabón o enlace).
Se escribirá:
Si lo que se desea es que aparezca sin subrayado o de otro color, o ambas cosas, se
puede recurrir a una instruccion de estilo. Así:
<A HREF="http://www.miservidor.es/mifichero.htm"
style="color:red; text-decoration:none";> Link de prueba
</A>.
Y se vería así: Link de prueba (Esto puede que no funcione en algunos navegadores
antiguos)
Esta forma de escribir la ruta del link de forma completa, se utiliza cuando hay que
saltar de una máquina a otra, si el enlace es para otra página de nuestro propio servidor
es suficiente escribir la ruta virtual corta: /mifichero.htm o bien:
/otro_directorio/mifichero.htm según proceda.
Como has visto, el punto de enlace se realiza en el texto escrito antes del cierre del
elemento </A>, pero también puede hacerse con una imagen cualquiera, que iría en
lugar del texto, incluso puedes poner el texto junto con una imagen. Por ejemplo para
hacer un link que nos lleve al índice desde una bola roja, se escribe:
Al igual que el texto aparece subrayado en azul cuando forma parte de un enlace, los
gráficos reciben un borde azul alrededor de toda la imagen, lo que a veces puede
resultar poco estético. Esto también tiene solución, pero aquí se hace en la instrucción
de la imagen:
Dentro de los parámetros pasados a HREF, podrás ver que al principio pone http://,
esto es, el tipo de servicio al que el visualizador va a llamar, y hay varios :
Del mismo modo, el atributo TARGET puede utilizarse para salir de una pantalla
compuesta de frames. En efecto, si estamos en una pantalla con, por ejemplo, dos
frames, cualquier link invocado desde cualquiera de ellos, hace que la página llamada
aparezca en ese mismo frame. Para volver a una pantalla "normal" sin frames, se puede
escribir un link con la sintaxis siguiente:
Como se acaba de ver, el atributo HREF sirve para enlazar con otro documento, que
puede estar en un servidor o ser un fichero local, pero que siempre se nos presentará
desde la primera línea del mismo.
El atributo NAME se utiliza para definir algo así como "un punto de aterrizaje" en
cualquier línea del documento de destino, de forma que nos aparecerá en pantalla desde
la línea deseada y no desde el principio. Esto es muy útil cuando se trata de documentos
largos divididos en secciones.
Se escribirá así:
En el documento activo:
Con los links, al igual que con los formularios, es posible moverse usando la tecla de
tabulación, para conseguir que el enfoque salte de un link a otro en un cierto orden. Para
ello se utiliza el atributo tabindex. Por ejemplo, pulsa la tecla "Tab":
Tablas Imágenes Body
Como puedes ver, los saltos en esta línea se han producido siguiendo la numeración
indicada por los disintos tabindex, al resto de links se llega por orden de escritura. Se
escribe:
Esto solamente funciona con versiones recientes de navegadores. Otro atributo reciente
de los links es title que permite escribir una descripción del link sin necesidad de pulsar
en él, simplemente poniendo encima el puntero del ratón. Por ejemplo:
Se obtiene: Tablas
Insertar imágenes en un documento permite crear páginas mucho más atractivas. Según
el tipo de gráficos utilizado se pueden conseguir efectos realmente sorprendentes.
Para insertar una imagen en un documento HTML se utiliza el elemento <IMG>. Este
elemento puede ir acompañado de los atributos SRC ALT ISMAP ALIGN WIDTH
HEIGTH BORDER VSPACE HSPACE. Con las nuevas implementaciones que
Netscape hace del elemento, se consiguen efectos de imagen flotante y por tanto se ha
hecho necesario dotar al elemento <BR> del atributo CLEAR.
Las imágenes utilizadas pueden estar en formato GIF o JPG. Estos formatos son
interpretados directamente por el visualizador. Se puede usar cualquier otro formato
como el MPG (vídeo), pero entonces el visualizador llamará a un programa auxiliar, que
previamente le habrás definido, para que sea éste el que visualice el fichero. La
desventaja de las imágenes en formatos no tratados por el propio visualizador es que no
verás el texto junto con la imagen, y por tanto no podrás imprimir la página compuesta.
texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texzto texto
texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texzto texto
texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texzto texto
texto texto texto texto texto texto texto
<TABLE> <TR><TD>texto texto texto texto texto texto texto texto texto texto texto
texto</TD><TD align=center><IMG SRC="sugeren.gif"></TD></TR> </TABLE>
texto texto texto texto texto texto texto texto texto texto texto texto
texto texto texto texto
Aquí la imagen es la misma de los ejemplos anteriores, pero ha sido redimensionada por
el visualizador. Su tamaño original es de 136x46 puntos. Este es su aspecto al doble:
272x92.
Aquí la imagen es la misma de los ejemplos anteriores, pero ha sido redimensionada por
el visualizador. Su tamaño original es de 136x46 puntos. Este es su aspecto a la mitad:
75x23
Imagen alineada a la izquierda con marco.Texto alineado a la derecha de la
imagen
<IMG SRC="sugeren.gif" ALIGN=LEFT BORDER=5> texto texto texto texto
texto
texto texto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texzto texto texto texto texto texto
texto texto texto texto texto texto texto texto texto texto texto texto texto texto
Como puedes ver, la imagen aparece rodeada de un marco de color como es habitual en
los puntos de link (en el texto es el subrayado). Si quieres eliminar el marco, escribe:
Ahora que ya sabes cómo manejar las imágenes, veamos algunos efectos especiales algo
más complicados.
Si mueves el ratón por encima de la imagen, verás que en la ventanita de abajo del
visualizador (la que hay junto a una llave) aparecen junto a un interrogante unos
números que cambian según muevas el ratón. Con cuidado intenta poner el puntero en
la esquina superior izquierda y en la inferior derecha. Verás las cifras 1,1 y 136,46,
respectivamente, que son las medidas en puntos que tiene el gráfico. Como ya habrás
supuesto, esto es un sistema de coordenadas, y para que nuestra imagen funcione como
un menú direccionador, lo que necesitamos es que algún elemento convierta esas
coordenadas en una dirección del estilo ya conocido:
"http://miservidor.es/mifichero.htm". Esto siginifica que con un solo link podemos
obtener un enorme número de direcciones, teóricamente tantas como pares de
coordenadas tiene la imagen. En la práctica serán menos, ya que andar intentando atinar
en el punto 11,32, por ejemplo, es un poco engorroso.
Sólo queda por decir que el fichero mimapa tiene que estar en otro directorio especial
que tiene el servidor a estos efectos, y al que por supuesto, solo puede acceder el
administrador del sitema.
Todo esto es suponiendo que el servidor está en una máquina UNIX. Si reside en tu
propio PC con Windows o en un MAC (que los hay), tendrás que ver las instrucciones
concretas del programa servidor. La forma de montar el mapa puede variar de un
programa servidor a otro, pero la base de funcionamiento es siempre la misma.
Otra forma alternativa de conseguir que una imagen responda con ciertas acciones, es
operar con los elementos de formularios. En el índice encontrarás información sobre un
tipo de formulario que devuelve un par de coordenadas, que una vez evaluadas permite
ejecutar una acción.
Pero, una vez más, Netscape ha propuesto una solución mucho más simple: que sea el
propio visualizador quien haga las veces de programa conversor. En efecto, un recurso
tan bueno como los mapas, no debe depender de tener tu máquina en red y de que haya
un servidor http que te atienda. Además, eso resta portabilidad a los documentos locales
y a los trabajos personales en disquete. Para ello ha implementado el elemento MAP
que acompañará a IMG.
Por ejemplo, en la siguiente imagen, la mitad izquierda nos envía a indice.htm y la
mitad derecha a intro.htm. Mueve el puntero del ratón horizontalmente sobre la imagen
y observa la ventanita que hay en la parte baja de la pantalla, verás como cambia el
nombre del link.
Se escribe así:
<MAP NAME="nombre1">
<AREA SHAPE="rect" COORDS="1,1,75,46" HREF="indice.htm">
<AREA SHAPE="rect" COORDS="76,1,136,46" HREF="intro.htm">
</MAP>
En primer lugar tenemos el elemento MAP, que lo que está haciendo es definir un mapa
de coordenadas. Va acompañado del atributo NAME que da nombre al mapa. Es
necesario nombrarlo porque podría haber más de uno en la misma página, y
evidentemente, sus nombres no deberán repetirse.
El parámetro COORDS fácilmente se adivina que indica las coordenadas del área, en
este caso vértice superior izquierdo e inferior derecho, respectivamente.
HREF ya sabemos lo que hace: indica un link con una página, pero esta vez no va
acompañando al elemento <A>, digamos que es un atributo prestado. Hay un área por
cada link definido. Si un área no queremos que tenga link se definirá con NOHREF.
Y por fin, USEMAP nos dice qué mapa de coordenadas hay que aplicar a la imagen. A
una misma imagen se le pueden aplicar distintos mapas si se desea. Fíjate en que
nombre1, (el nombre del mapa) va precedido del símbolo #. Esto se debe a que, en este
caso, el mapa al que se hace referencia está en la misma página que la instrucción IMG.
Podría estar en otra, y en ese caso el símbolo tendría que estar después del nombre de la
página. Por ejemplo: otrapagina.htm#nombre1
Como ya se ha dicho más arriba, hay tres figuras geométricas definibles para las áreas:
rect, circle y poly. El rectángulo ya lo conocemos; consiste en parejas de coordenadas
que indican los vértices superior izquierdo e inferior derecho respectivamente del área.
Para el cículo (circ) son necesarios tres valores: x,y r donde x,y es el par de coordenas
que indican el punto donde está el centro del cículo, y r es el radio del círculo medido
en puntos. Para los polígonos (poly) se necesitan tantas parejas de coordenadas como
vértices tenga el polígono, procurando que la última pareja quede unida a la primera, ya
que la figura debe estar cerrada. No es obligatorio que sean figuras regulares. En el caso
de que se quiera emplear todo el gráfico como área de enlace, es decir, un solo link, se
puede emplear default, y no es necesario indicar ninguna coordenada.
<DL>
<DT><IMG SRC="bolaroja.gif">Linea de texto
<DT><IMG SRC="bolaroja.gif">Linea de texto
<DT><IMG SRC="bolaroja.gif">Linea de texto
</DL>
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
Linea de texto
¿Cómo se escriben los formularios?
La base del formulario es el elemento lleno <FORM>, es el que define una zona de la
página como formulario. En una página puede haber varias zonas definidas como
formulario. Dentro de este elemento a su vez se utilizan otros elementos, que son los
que realmente dibujan en pantalla los componentes del formulario, son:
<INPUT>
Campos de entrada por teclado.
Botones de selección.
Casillas de marca.
Botones de proceso.
Botones de inicialización (reset).
Imágenes sensibles al ratón.
<SELECT>
Listas desplegables de valores.
Listas fijas de valores.
<TEXTAREA>
Ventanas de escritura libre.
Este sería el más elemental de los formularios, con sólo un campo y un botón de envío:
Procesar
METHOD se refiere al método que emplearemos para enviar los datos al servidor, y
pueden ser dos: POST y GET. El optar por uno u otro obedece a complejas cuestiones
de programación basadas en la máxima longitud de registro que puede enviarse; cada
uno usa un canal de salida distinto. El que soporta más longitud es POST, y será el que
utilicemos en casi todos los ejemplos. Si el formulario solamente se utiliza para llamar a
otras páginas, se utiliza el método GET, y si se trata de envio de datos POST.
Además de enviar datos a un servidor, ACTION también puede realizar una acción en
local, por ejemplo traer una página:
Se escribe:
Otra cosa que puede hacer ACTION, y que además tiene la ventaja de que no sería
preciso diseñar un CGI, es enviar un e-mail (correo electrónico) a un usuario o a una
lista de usuarios. Los datos enviados por el formulario, tendrán la forma que ya
conocemos, pero una vez recibidos por esta vía, pueden ser tratados con programas de
edición de texto, y convertidos al formato que se quiera. Por ejemplo con Word y las
macros de conversión para Word 6.0 y Word 97 que hay en esta guía.
Se escribe:
CAMPO1=Esto+es+una&CAMPO2=demostracion+de+formularios
CAMPO1=Esto es una
CAMPO2=demostracion de formularios
Al igual que con el elemento <A> es posible hacer que el asunto (subject) del e-mail se
reciba con el texto que quieras, pero omitiendo la parte correspondiente al cuerpo
(body) del mismo, ya que en este caso el contenido del e-mail son los campos del
formulario:
El elemento INPUT
INPUT sin ningún atributo define por defecto una ventana de escritura de 20 caracteres
de longitud por una línea de ancho:
Se escribe:
<FORM> <INPUT> </FORM>
<INPUT> admite varios atributos:
NAME define el nombre de la ventana (que en realidad es un campo dentro del registro,
que en conjunto, es el formulario). Si escribes:
<FORM> <INPUT SIZE=10 MAXLENGTH=10 NAME="campo1"></FORM>
VALUE sirve para que la ventana aparezca con un valor predeterminado, y no vacía
como hace por defecto:
HOLA
Se escribe:
<FORM> <INPUT VALUE="HOLA"> </FORM>
El valor puede ser modificado o barrado por el usuario.
Se escribe:
<FORM> <INPUT VALUE="HOLA" READONLY> </FORM>
No funciona en versiones antiguas de los navegadores.
Se escribe:
<FORM> <INPUT TYPE="PASSWORD" VALUE="HOLA"> </FORM>
TYPE=SUBMIT para generar un botón que al ser pulsado cierra la captura de datos del
formulario y procede a ejecutar lo definido en el atributo ACTION que ya conocemos.
Procesar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT NAME="campo1">
<INPUT TYPE="SUBMIT" VALUE="Procesar"></FORM>
VALUE puede acompañar a SUBMIT , y en este caso sirve para definir el texto que
queremos que tenga el botón en su interior. Si se omite, por defecto el visualizador le da
el valor "Submit Query".
Existe otro tipo llamado TYPE=BUTTON que genera un botón igual al generado por el
tipo submit, pero que no realiza ninguna acción; es simplemente un botón "muerto" en
cuanto a acciones directas. Suele utilizarse para asociarle instrucciones en JavaScript
mediante el evento onClick.
Se escribe:
TYPE=RESET para generar un botón que al ser pulsado inicializa todos los
componentes del formulario.
Inicializar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT NAME="campo1">
<INPUT TYPE="RESET" VALUE="Inicializar"></FORM>
VALUE puede acompañar a RESET , y en este caso sirve para definir el texto que
queremos que tenga el botón en su interior. Si se omite, por defecto el visualizador le da
el valor "Reset".
TYPE=FILE Este es un nuevo tipo que sólo funciona con Netscape 3.0 o superior, y
sirve para enviar un fichero a una máquina remota (hacer FTP), pero no funciona solo,
necesita de ciertos acompañantes que hacen su uso un poco más complicado:
Aquí hay que echar mano de un atributo parametrizado de <FORM>:
ENCTYPE="multipart/form-data" para generar un botón que permitirá buscar un
fichero en nuestra máquina, ponerlo en una ventanita de entrada como las ya conocidas
(por tanto tanbién se puede escribir directamente el nombre del fichero en lugar de
buscarlo) y junto con un botón tipo submit enviar el fichero.
Enviar fichero
Enviar el fichero:
Se escribe:
<FORM enctype="multipart/form-data"
ACTION="ftp://miservidor/" METHOD="POST">
Enviar el fichero:
<INPUT NAME="mifichero" TYPE="FILE">
<INPUT TYPE="SUBMIT" VALUE="Enviar fichero"></FORM>
el botón generado aparece con el texto "Browse.." y no sirve de nada añadirle el
parámetro VALUE para darle otro nombre, como se puede hacer con el botón de tipo
submit.
En este ejemplo se haría una conexión al servicio FTP general de la máquina remota,
pero se puede hacer a un directorio en particular de un usuario concreto. Sólo habría que
cambiar la línea
ACTION="ftp://miservidor/" METHOD="POST">
y escribir:
ACTION="ftp://miusuario@miservidor/" METHOD="POST">
Otra forma más directa de hacer un FTP en las dos direcciones, es desde la ventana
"Location" del visualizador. La sintaxis de los parámetros de ACTION son válidos en
esa ventana.
Por supuesto, todo esto si no tienes cuenta y permiso de escritura en la máquina remota,
no sirve para nada...
<FORM enctype="multipart/form-data"
ACTION="mailto:mi-usuario@miservidor-e-mail/" METHOD="POST">
Adjuntar el fichero:
<INPUT NAME="mifichero" TYPE="FILE">
<INPUT TYPE="SUBMIT" VALUE="Adjuntar fichero"></FORM>
TYPE=IMAGE hace que el visualizador presente una imagen que es sensible al ratón.
Lo que el formulario envía al servidor es un registro cuyos campos son el nombre
definido para la imagen seguido de los parámetros .x=n .y=n donde n son los números
de las coordenas x y del punto en el que estaba el ratón en el momento del envío. Para
presentar la imagen se utiliza el atributo SRC del elemento IMG. Este sería un ejemplo
de respuesta:
imagen.x=99&imagen.y=15
Prueba a pulsar en cualquier parte de esta imagen:
Se escribe:
El elemento SELECT
SELECT sin ningún atributo define por defecto una lista desplegable de toda la pantalla
de alto y una columna de ancho:
Se escribe:
<FORM> <SELECT> </SELECT> </FORM>
Como evidentemente esto no es muy práctico, hay que parametrizar el elemento. En
primer lugar se le da nombre, ya que éste es un campo más del formulario, la diferencia
es que no hay que escribir en él sino escoger un valor de los que nos muestre al
desplegarlo, se usará el atributo NAME, y para entrar valores en la lista se usa el
atributo OPTION.
Procesar Inicializar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT TYPE="SUBMIT" VALUE="Procesar">
<INPUT TYPE="RESET" VALUE="Inicializar">
<SELECT NAME="lista1">
<OPTION>Valor 1
<OPTION>Valor 2
<OPTION>Valor 3
</SELECT>
</FORM>
Se deben tener en cuenta varias cosas respecto a SELECT:
Se debe procurar que los contenidos de los campos sean lo más cortos posibles; una
excesiva longitud implica mayor tráfico por la red, pero se deben construir las listas de
forma clara, y que resulten de fácil lectura al usuario, lo que puede aumentar la longitud
de los valores. Para enviar un valor diferente del que aparece en la lista, se utiliza el
parámetro VALUE asociado al atributo OPTION. Prueba con el valor 5 de la siguiente
lista:
Procesar Inicializar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT TYPE="SUBMIT" VALUE="Procesar">
<INPUT TYPE="RESET" VALUE="Inicializar">
Procesar Inicializar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT TYPE="SUBMIT" VALUE="Procesar">
<INPUT TYPE="RESET" VALUE="Inicializar">
El elemento TEXTAREA
Este elemento, como su nombre indica, permite definir un área de texto en la pantalla en
la que podemos escribir cualquier cosa. Se debe escribir ya parametrizada en cuanto a
dimensiones, con los atributos ROWS (líneas) y COLS (COLUMNAS). No tiene otros
atributos o posibles variantes. Por supuesto, para que sea operativo, deberá ir
acompañado de los componentes necesarios para enviar e inicializar.
Procesar Inicializar
Se escribe:
<FORM METHOD="POST" ACTION="http://miserver.midominio.mipais/cgi-
bin/test2-cgi">
<INPUT TYPE="SUBMIT" VALUE="Procesar">
<INPUT TYPE="RESET" VALUE="Inicializar">
Aunque no es habitual, dentro de un área de texto puede haber un contenido por defecto
(que puede ser borrado o modificado por el usuario). Para ello simplemente se escribirá
el texto entre <TEXTAREA> y </TEXTAREA>. Así:
<>TEXTAREA NAME="texto1" ROWS=5 COLS=40>
Contenido del area de texto
</TEXTAREA>
Se puede proceder a la descodificación en el programa CGI que recibe los datos, o bien
definir macros en programas auxiliares que serán ejecutados después.
ATENCION: Hay que tener en cuenta que los estilos no estan estandarizados, y hay
cosas que se ven bien en unos navegadores y no se ven en otros, y hay solo unos pocos
efectos que se vean en todos ellos.
En los elementos de formulario pueden redefinirse casi todos los parámetros: colores de
fondo, tipo y anchura de bordes, color y tipo de letra del texto, altura y anchura del
elemento, alineación del texto dentro del elemento, etc. Por ejemplo:
Solo lectura
Se escribe así:
</FORM>
Problemas de privacidad en los formularios
En las últimas versiones del navegador Internet Explorer de Microsoft, ha aparecido una
nueva prestación consistente en memorizar los datos introducidos en cualquier
formulario de uso habitual. En efecto, muchas veces se utilizan formularios para tareas
repetitivas, en las que casi siempre hay que introducir los mismos datos. Esto nos puede
ahorrar tener que escribir cada vez lo mismo, y Microsoft pensó que sería buena idea
facilitar la labor del usuario haciendo que el navegador guarde en una lista desplegable
todos los datos que se van escribiendo en cada transacción, de manera que cuando se
accede a la página, cada campo de texto (<INPUT TYPE="text">) queda convertido en
una lista desplegable (<SELECT>) cuyo contenido son los datos que se han introducido
en ese mismo campo en ocasiones anteriores.
Visto así suena incluso interesante.... a condición de que el usuario sea siempre el
mismo, claro. Porque, ¿qué ocurre si el formulario está incluido en una página que es
utilizada por numerosas personas en una sala común con máquinas públicas, como una
sala de usuarios o un cibercafé? Pues que si el siguiente usuario se conecta a la misma
página, puede ver los datos que escribió su antecesor en esa máquina.
Para evitarlo, existe un parámetro, poco conocido en general, que debe incluirse en la
definición del formulario, y que no tiene ningún efecto en los navegadores que no tienen
la costumbre de ser tan indiscretos. Así:
</FORM>
En este caso, "Campo2" sería el primero en recibir el cursor. Todo esto sólo funciona
con navegadores de versiones recientes.
</FORM>
Control desac
Como puedes ver, el efecto es parecido al que se consigue con la opción de estilo
readonly, pero con DISABLED se impide incluso el que se pueda seleccionar el
contenido del control (no se produce el evento onFocus) y con readonly no.
Los frames (en inglés frame = cuadro, bastidor o marco) es un elemento implementado
por Netscape, que permite dividir la pantalla en varias áreas independientes unas de
otras, y por tanto con contenidos distintos, aunque puedan estar relacionados. No hay
límites para el contenido de cada una de estas áreas: tienen las mismas propiedades que
la pantalla completa normal, tal y como la conocemos. No hay que confundir los frames
con las tablas. Su apariencia, a veces, puede ser similar, pero mientras el contenido de la
celda de una tabla es fijo, en un área de pantalla creado por el elemento FRAME se
dispone de todos los recursos del HTML. Es una zona viva.
Las páginas que contienen una definición de FRAME no pueden contener el elemento
BODY ni ninguno de los elementos que habitualmente aparecen en el BODY antes del
elemento FRAMESET que es el que define la creación del FRAME. Si esto no se
cumple, el FRAME será ignorado.
Algunos visualizadores no soportan los frames. Para que nuestra página con frames no
resulte opaca a ellos, se utilizará el elemento NOFRAMES que permite ofrecer un texto
alternativo en entorno normal.
Por supuesto, los frames son parametrizables en cuanto a tamaño y número de áreas, si
éstas se pueden redimensionar por el usuario o son fijas, si tienen o no barras de
scrolling, se pueden anidar, relacionar sus contenidos, etc. Veamos algunos ejemplos
prácticos y su sintaxis:
<FRAMESET>
<NOFRAMES>
<BODY>
Su visualizador no soporta frames. Pulse
<A HREF="indice.htm">aqui </A> para volver.
</BODY>
</NOFRAMES>
</FRAMESET>
</HTML>
Fíjate en que no aparece el elemento <BODY> en su posición habitual, sino dentro de
un elemento especial que se activa sólo cuando el visualizador no soporta los frames:
NOFRAMES. Si no declaras el área NOFRAMES y el visualizador no soporta este
efecto, no se verá nada. Obviamente, los visualizadores que sí soportan frames
ignorarán el contenido del área NOFRAMES.
Hasta aquí ya podemos hacernos una idea de cómo funcionan los frames: Lo primero es
crear una minipágina con la definición del frame, viene a ser algo así como una
"lanzadera" y sólo contiene la definición del frame. Y por último, crear las páginas que
constituirán el contenido de cada una de las áreas definidas en la "lanzadera". En el
ejemplo anterior son pagina1.htm y pagina2.htm, y aquí es donde escribirás tus cosas;
es decir que son páginas completamente normales, y que también pueden ser utilizadas
de la forma habitual. A su vez, la "lanzadera" puede ser invocada con un link desde
cualquier página normal. Como puedes ver, no es obligado crear todo tu documento con
frames: puedes utilizarlos solamente allí donde sea necesario, si quieres.
Es posible definir cualquier combinación de áreas verticales y horizontales. La clave
está en combinar adecuadamente los anidamientos del elemento <FRAMESET> con
sus atributos COLS o ROWS según interese. Como puedes ver, el más importante es el
primer <FRAMESET>, ya que es el que define cómo va a ser "troceada" la página
inicialmente, si en porciones verticales u horizontales, y sobre esta base se deberán
definir todos los demás anidamientos.
Ejemplo real
Ejemplo real
Ejemplo real
Ejemplo real
Habrás podido comprobar que los parámetros que dimensionan los frames actuan al
presentar la página inicialmente. Después, si el usuario lo desea, puede
redimensionarlos como quiera. Esta es la opción por defecto. Si no se quiere permitir el
redimensionado, se aplica el atributo NORESIZE al elemento FRAME. Así:
<FRAME NORESIZE SRC.....>
Algo parecido ocurre con las barras de scrolling. Están regidas por el atributo
SCROLLING, que puede valer YES NO o AUTO. Por defecto es AUTO. Con esta
opción el visualizador decide, en función del contenido, si son necesarias las barras o
no. Con YES las pondrá siempre, aunque no sean necesarias, y con NO no las pondrá
nunca, aunque sean necesarias.
<FRAME SCROLLING=YES ....>
Ejemplo real
Ejemplo real
Esto de los cruces es un poco complicado... fíjate en el contenido de cada página que
entra en juego. Cuando actives Ejemplo real el fichero llamado es cruzado.htm.
Pruébalo.
Fichero Contenido Acción
<A HREF="cc.htm"
Pone CC en el frame derecho
aa.htm TARGET="VENTANA">
<A HREF="cc.htm"> Trae CC
bb.htm Esto es "VENTANA" No hace nada
<A HREF="bb.htm" Pone BB en el frame derecho
cc.htm TARGET="VENTANA"> porque se llama "VENTANA"
<A HREF="aa.htm"> Trae AA
<FRAMESET> -
<FRAME SRC="aa.htm"> Pone AA en el frame izqdo.
cruzado.htm <FRAME SRC="bb.htm" Pone BB en el frame derecho y le
NAME="VENTANA"> da como nombre "VENTANA"
</FRAMESET> -
<FRAMESET COLS=30%,30%,30%>
<FRAME BORDERCOLOR="red" SRC="a.htm">
<FRAME BORDERCOLOR="blue"SRC="b.htm">
<FRAME SRC="c.htm">
</FRAMESET>
Se obtiene un frame de tres columnas con la primera barra de separación roja y la
segunda azul. Ejemplo real
Salir de una pantalla con frames
Para salir de una pantalla compuesta de frames es necesario definir algun link. En
efecto, si estamos en una pantalla con, por ejemplo, dos frames, cualquier link invocado
desde cualquiera de ellos, hace que la página llamada aparezca en ese mismo frame.
Para volver a una pantalla "normal" sin frames, se puede escribir un link con la sintaxis
siguiente:
Existen otros valores predeterminados para el atributo TARGET: _blank que abre una
nueva ventana del navegador, _self que llama el destino del enlace a la misma ventana
en que se está (valor por defecto), y _top que funciona igual que _parent.
Ejemplo real
Puesto que se va a poder elegir el frame de destino, es importante que todos ellos tengan
nombre. Este es el código del frame arriba, que reside en la página que carga:
fraarriba.htm
<HTML>
<HEAD><TITLE>Frames y formularios</TITLE></HEAD>
<BODY>
<CENTER><H2>FRAMES Y FORMULARIOS</H2></CENTER>
<TD ALIGN=CENTER>
<FORM>
<SELECT NAME="list">
<OPTION VALUE="a.htm" >Contenido A
<OPTION VALUE="b.htm" >Contenido B
<OPTION VALUE="c.htm" >Contenido C
</SELECT>
<BR>
<INPUT TYPE=button VALUE="Frame central" onClick=
"parent.centro.location.href=
this.form.list.options[this.form.list.selectedIndex].value">
</FORM>
</TD>
<TD ALIGN=CENTER>
<FORM>
<SELECT NAME="list">
<OPTION VALUE="a.htm" >Contenido A
<OPTION VALUE="b.htm" >Contenido B
<OPTION VALUE="c.htm" >Contenido C
</SELECT>
<BR>
<INPUT TYPE=button VALUE="Frame derecho" onClick=
"parent.derecha.location.href=
this.form.list.options[this.form.list.selectedIndex].value">
</FORM>
</TD></TR>
</TABLE>
</BODY>
</HTML>
Como puedes ver, todo reside en el código JavaScript que se ejecuta al pulsar el botón
de cualquiera de los tres formularios definidos en el frame arriba. Mediante este código
se captura un evento: onClick que se produce al pulsar con el puntero del ratón en el
botón del formulario. La primera parte de la instrucción ejecutada:
parent.derecha.location.href= es la que establece en qué frame se va a cargar la página
seleccionada en la lista desplegable, en este caso el llamado derecha. La segunda parte
de la instrucción: this.form.list.options[this.form.list.selectedIndex].value es la que
indica qué página hay que cargar en el frame definido en la primera parte de la
instrucción. Si... esto suena a muy complicado. No es fácil entender la compleja
estructura de objetos del navegador. Para más detalle, puedes ver la sección sobre
JavaScript, en particular, y toda la sección de programación en general, de esta guia.
Otra cosa que hay que tener en cuenta cuando se escribe JavaScript, es que distingue
entre mayúsculas y minúsculas. En el ejemplo anterior, si los ficheros llamados por el
formulario: a.htm b.htm c.htm se han guardado con el nombre en mayúsculas, como
A.htm o B.htm, no funcionará si no se invocan escritos de la misma forma. Esto es
especialmente importante cuando tengas tus páginas en servidores con sistemas
operativos UNIX o LINUX, que son la mayoría de ellos.
Frames incrustados
Se puede insertar un frame en cualquier punto de una página, ya sea ésta, a su vez, un
frame o una página normal. Su apariencia recuerda a los gráficos y a los formularios,
pero su contenido es el de una página independiente. Por ejemplo, si se escribe:
Como es normal el HTML, como cualquier otro lenguaje, no está terminado ni lo estará
nunca. Día a día se le van implementando nuevas utilidades que le hacen, si cabe, más
atractivo y práctico. Hay que distinguir entre lo que son elementos "oficiales" del
lenguaje, y las implementaciones que los creadores de cada visualizador le van
añadiendo a sus respectivos programas. Buena muestra de ello son los CGI y los
applets, plug-ins y JavaScripts de Netscape y los ActiveX de Microsoft.
No hay que confundir los applets con los plug-ins o los CGI. En la versión 2.0,
Netscape introdujo extensiones al lenguaje HTML para permitir incorporar un programa
escrito en Java a un documento HTML, del mismo modo que se puede insertar, por
ejemplo, una imagen. A estos programas, se les denomina "applets". Son programas
diseñados para un fin concreto dentro de la página, como producir una animación o
filtrar la entrada de información en un formulario. Los JavaScripts no son applets, no
tienen la entidad de auténticos programas, y sus acciones son más limitadas. En
realidad, y aunque aún no forma parte del HTML oficial, podría considerarse el java
interpretado, como una extensión del HTML, igual que las tablas, o cualquier otro
elemento, aunque un poco más complejo, al tratarse de un lenguaje basado en objetos y
muy parecido al lenguaje C.
Los plug-ins, en cambio, son módulos de software (programas) que se ensamblan con el
visualizador, añadiéndole nuevas prestaciones o habilidades, que le permitirán
descodificar nuevos formatos para los que no estaba preparado originalmente, como el
VRML, para la navegación en mundos 3D, el LiveAudio, para escuchar sonidos a través
de Internet, o el LiveVideo para ver ficheros de vídeo digital. De esto se deduce, que si
no se le han instalado los plug-ins necesarios a nuestro visualizador, al intentar leer una
página con, por ejemplo, un fichero de vídeo, lo que éste hará es pedirnos el nombre de
un programa auxiliar para que sea él quien gestione ese fichero en lugar de procesarlo
por sí mismo.
Todo esto, es respecto a Netscape. Microsoft llegó tarde, pero por supuesto, tiene algo
parecido: el Active X. Esto no es más que un pequeño módulo capaz de hacer de enlace
entre el Internet Explorer (el visualizador de Microsoft) y paquetes de desarrollo como
MS Visual Basic, MS Visual J++ o aplicaciones de uso común como MS Excel, o con
recursos del sistema. El problema es que sólo puede utilizarse en entornos Microsoft, lo
que le resta la portabilidad intersistemas que tiene Java.
Te habrás dado cuenta, de que todo lo dicho es referido siempre al propio visualizador,
es decir que se trata de acciones realizadas en local, en tu propia máquina, y por tanto
no es necesario estar conectado a una red. Los programas CGI se ejecutan en el
servidor, es decir en remoto, y sí es necesario estar conectado a la red. Constituyen una
solución más fiable que las anteriores, ya que las máquinas donde residen los
servidores, suelen ser mucho más potentes que los PC's clientes, y con más recursos
siempre disponibles, lo que permite realizar cualquier diseño por complicado que sea,
sin obligar a quien se conecta a tener un ordenador caro, pero su eficacia depende
absolutamente de la velocidad de la red, que a veces es desesperante... Aunque se
mencionan aquí a efectos de comparación, los CGI no son nuevos, ya que aparecieron
en las primeras versiones oficiales del HTML.
A medida que vayan apareciendo, se recogerán en esta guía las innovaciones más
notables, aunque sólo la parte que sea estrictamente HTML, es decir, lo que hay que
saber para incorporar los nuevos inventos a tus páginas, pero no cómo se hacen esos
inventos. Por ejemplo, veremos cómo embeber un script interpretado de JavaScript en
una página HTML, pero no cómo se programa en JavaScript (por lo menos de
momento).
SRC Indica dónde está el fichero de sonido, pero no puede utilizarse solo, necesita la
compañía de otros atributos del elemento, concretamente los que definen el tamaño de
la consola (que es un icono parecido al teclado que tiene un casette pequeño):
<WIDTH> (largo) y <HEIGHT> (alto) Por ejemplo:
En caso de omitir los atributos WIDTH y HEIGHT, los tamaños por defecto no
permiten ver la consola entera, y no es posible activar el sonido. Los tamaños máximos
son WIDTH=160 y HEIGHT=70; no sirve de nada aumentarlos y si se disminuyen, la
imagen se recorta de derecha a izquierda y de abajo a arriba, pero no
proporcionalmente. Como puedes ver, la consola incluye un control de sonido, que por
defecto se situa en el 50%. Este valor puede modificarse con el atributo VOLUME y
puede oscilar entre 0 y 100. La consola también permite cambiar el volumen
manualmente.
Con SMALLCONSOLE los tamaños por defecto sólo dejan ver los botones de START
Y STOP, desapareciendo el control de volumen. Los tamaños máximos son
WIDTH=144 y HEIGHT=15, y al igual que antes, no sirve de nada aumentarlos. Si el
navegador es el IE estas medidas deberán cambiarse.
Los otros valores de CONTROLS son: PLAYBUTTON, PAUSEBUTTON,
STOPBUTTON y VOLUMELEVER. Aunque en inglés, es fácil deducir lo que hace
cada uno, y sus tamaños máximos son WIDTH=37 x HEIGHT=22. Sólo es posible
utilizar un valor por cada elemento EMBED, si pones más de uno sólo hace efecto el
primero. Si se quiere usar más de un botón, por ejemplo el de start y el stop en distintos
lugares de la página, pero actuando sobre el mismo fichero de sonido, usaremos el
atributo MASTERSOUND en combinación con NAME. Si escribes:
Otro atributo de EMBED es AUTOSTART con dos posibles valores: FALSE (por
defecto) y TRUE, y como ya habrás deducido, TRUE hace que suene inmediatamente
después de cargar la página, y sin necesidad de pulsar el botón "start" de la consola. Por
ejemplo:
El siguiente atributo a analizar es HIDDEN que sólo tiene un valor: TRUE, y hace
invisible la consola, pero evidentemente, si es invisible no puedes activar el sonido, y
por tanto lo hace él mismo, siempre que no hayas puesto AUTOSTART=FALSE, claro.
Por ejemplo:
<EMBED SRC="mozart.mid" WIDTH=160 HEIGHT=70 HIDDEN=TRUE>
No es obligado comenzar una audición por el principio del fichero. Imagínate que tienes
un fichero con instrucciones habladas, y quieres dar la oportuna en cada momento, no
todas de golpe. Para esto tenemos los atributos STARTTIME=mm:ss y
ENDTIME=mm:ss donde mm son los minutos y ss los segundos del punto de
comienzo o fin de la audición. Cuidado: los valores hay que darlos con dos dígitos: Por
ejemplo:
Por último tenemos el atributo ALIGN y sus valores TOP, BOTTOM, CENTER,
LEFT, RIGHT, MIDDLE y TEXTTOP que funcionan igual que sus respectivos del
elemento IMG, es decir, que no tiene efectos sobre el sonido, sino sobre la imagen de la
consola y su alineación con el texto de la página.
Un truco..
Si en una página pones dos o más ficheros .mid, sólo se oye el último que sea activado.
La secuencia es: se carga el primero, arranca y se oirá durante el tiempo que tarde en
cargarse el segundo, y en cuanto arranca el segundo, el primero pasa a la posición de
"stop". Si los ficheros son .wav ocurre lo mismo, pero ¿que pasa si pones un .mid y un
.wav? Pues que cada uno de ellos utiliza controladores de recursos de sistema
diferentes, y por tanto se pueden oir los dos a la vez. Imagínate tu voz explicando algo,
y una suave música de fondo... Como en los más sofisticados documentales. Eso sí,
necesitas Windows 95.
Un aviso:
Las páginas que incluyen sonidos pueden dar problemas a la hora de imprimirlos,
llegando incluso a colgar la máquina.
Y un problema:
Como es lógico no podemos saber que navegador tiene quien visite nuestra página...
entonces, cómo montamos esto?
El que un formato de vídeo se vea en tu máquina sin problemas, no significa que ocurra
lo mismo en cualquier máquina, incluso con formatos de los más habituales. La gente
suele tener sus máquinas con mucha "basura", y es posible que algun programa (sobre
todo juegos o enciclopedias) haya eliminado o cambiado algunos decodificadores por
otros. Los formatos pueden cambiar según la cámara o la placa de vídeo con que han
sido generados los ficheros. Cada fabricante suele proporcionar los "codecs" para sus
productos.
Otro problema de los ficheros digitales de vídeo es el gran tamaño de los mismos, ya
que en la práctica unos pocos segundos de vídeo con sonido puede representar un
fichero de varios Mb. (mega bytes). Se deben poner muestras de pequeño tamaño para
que el visitante de nuestra página pueda probar rápidamente si le interesa el fichero o
no, y al lado la versión completa indicando su tamaño y el "codec" que debe utilizarse.
Al igual que con el sonido, se utiliza el elemento EMBED, aunque con menos atributos:
SRC, HEIGHT, WIDTH, AUTOSTART, LOOP y ALIGN; todos ellos funcionan de
forma parecida a los del sonido.
Analicémoslos brevemente:
SRC Indica dónde está el fichero de vídeo. HEIGHT (alto) y WIDTH (ancho) no
pueden omitirse, ya que sus valores por defecto no permiten ver ninguna imagen real.
Los tamaños standard de los ficheros .AVI son 90x120, 120x160, 180x240, 240x320,
300x400, etc., las medidas deben conservar las proporciones de la televisión, es decir
4:3. Hay que tener cuidado a la hora de poner el valor de estos atributos, ya que si no
coinciden con los que realmente tiene la imagen, ésta será recortada (no
redimensionada) de derecha a izquierda y de abajo a arriba.
El siguiente atributo es AUTOSTART, con dos valores posibles: FALSE (por defecto)
y TRUE que como puedes suponer, sirve para que el vídeo arranque nada más cargarse
el fichero. Si estableces FALSE, entonces el vídeo se activa al hacer click con el ratón
sobre él, lo mismo que para repetir el pase una vez finalizado.
Para hacer que el vídeo se repita contínuamente o se pare después de un pase, tenemos
el atributo LOOP con dos valores: FALSE (por defecto) y TRUE.
Por último tenemos el atributo ALIGN y sus valores TOP, BOTTOM, CENTER,
LEFT, RIGHT, MIDDLE y TEXTTOP que funcionan igual que sus respectivos del
elemento IMG, es decir, que no tiene efectos sobre el vídeo, sino sobre su alineación
con el texto de la página.
Páginas multimedia
Multimedia con el Media Player de Windows
Se utiliza también el elemento <EMBED> y sus atributos son: TYPE, SRC,
AUTOSTART, LOOP, SHOWCONTROLS, SHOWSTATUSBAR,
CLICKTOPLAY, VOLUME, WIDTH, HEIGHT, HIDDEN. Todas las instrucciones
son válidas tanto para ficheros de sonido como para los de video o video con sonido. Si
algun tipo de fichero no es reconocido por el media player, se puede instalar el "codec"
adecuado.
SRC Indica dónde está el fichero multimedia, pero no puede utilizarse solo, necesita la
compañía de otros atributos del elemento, concretamente los que definen el tamaño de
la consola: <WIDTH> (largo) y <HEIGHT> (alto) Por ejemplo:
<EMBED TYPE="application/x-mplayer2"
SRC="minueto.mid"
WIDTH=287
HEIGHT=65>
Hará aparecer el Media Player:
En caso de omitir los atributos WIDTH y HEIGHT, los tamaños por defecto no
permiten ver el reproductor multimedia entero.
Otro atributo de EMBED es AUTOSTART con dos posibles valores: 1 (por defecto) y
0, y como ya habrás deducido, 1 hace que suene inmediatamente después de cargar la
página, y sin necesidad de pulsar el botón "start" de la consola. Por ejemplo:
<EMBED TYPE="application/x-mplayer2"
SRC="minueto.mid"
WIDTH=287
HEIGHT=65
AUTOSRART=0>
El siguiente atributo a analizar es HIDDEN que sólo tiene un valor: TRUE, y hace
invisible la consola, pero evidentemente, si es invisible no puedes activarla, y por tanto
lo hace él mismo, siempre que no hayas puesto AUTOSTART=0, claro. Por ejemplo:
<EMBED TYPE="application/x-mplayer2"
SRC="minueto.mid"
WIDTH=287
HEIGHT=65
AUTOSRART=1
HIDDEN=TRUE>
También disponemos de estos otros atributos:
SHOWCONTROLS que puede valer 1 (por defecto) o 0, y sirve para que la consola
muestre los botones de control, como start, pause stop, etc.
SHOWSTATUSBAR puede valer 0 (por defecto) o 1 para hacer que aparezca la barra
de estado.
VOLUME Para definir el volumen de sonido que habrá al cargar el fichero multimedia.
Contra lo que cabría esperar el valor 0 establece el máximo volumen y cualquier valor
mayor que 0 establece volumen medio. Hay además un atributo que no es propiamente
del elemento <EMBED>: ALIGN= y sus valores TOP, BOTTOM, CENTER, LEFT,
RIGHT, MIDDLE y TEXTTOP que funcionan igual que sus respectivos del elemento
IMG, es decir, que no tiene efectos sobre el sonido o la imagen, sino sobre la figura de
la consola y su alineación con el texto de la página. He aquí un ejemplo con todos ellos
excepto HIDDEN:
<EMBED TYPE="application/x-mplayer2"
SRC="colon.avi"
WIDTH=350
HEIGHT=300
AUTOSTART=0
SHOWCONTROLS=1
SHOWSTATUSBAR=1
CLICKTOPLAY=1
VOLUME=0
ALIGN=TOP>
Hasta aquí hemos visto como presentar un fichero multimedia, pero solo uno. En efecto,
¿qué hacer si tenemos un fichero de gran tamaño troceado en varias partes? O
simplemente, varios ficheros relacionados aunque no formen parte de uno solo. Si el
número de partes es relativamente elevado, puede ser muy cargante presentarlos todos
de la forma que ya conocemos, y lo que es peor, puede suceder que el navegador se
cuelgue.
Existe una forma de acceder a una lista de ficheros multimedia utilizando el Media
Player. Es decir, que escribiendo solamente un elemento <EMBED> se puede ver o
escuchar una serie de ficheros. Así:
<EMBED TYPE="application/x-mplayer2"
SRC="lista.asx"
AUTOSTART=0
WIDTH=287
HEIGHT=65>
Como puedes ver, la sitaxis es la misma de siempre. La particularidad reside en la
extensión del fichero multimedia. No, no es un nuevo tipo de video super comprimido,
es simplemente un fichero de texto, editado con cualquier editor, como el bloc de notas,
que contiene la referencia a los ficheros que se desea encadenar. Por ejemplo, para
encadenar dos de los ficheros multimedia que se han utilizado hasta ahora como
ejemplos, el fichero .ASX necesario se escribe:
Fichero lista.asx
ATENCION: Todas las líneas de los ficheros .asx deben comenzar justo junto al margen
izquierdo, sin ningun espacio en blanco.
Gráficos animados
Una nueva propiedad de algunos visualizadores es la posibilidad de presentar gráficos
con animación. No hay que confundir los gráficos animados en formato GIF con los
"movies" o vídeos en formato MPG que no son tratados directamente por el
visualizador, sino por una herramienta auxiliar que hay que definirle.
Los visualizadores suelen presentar correctamente los formatos GIF y JPG. Netscape ha
implementado la posibilidad de mostrar un tipo de gráfico tipo GIF que incluye en su
interior una secuencia, que junto con instrucciones de repetición (loop), espera (wait) y
controles de cabecera permiten reproducir una animación. La diferencia de tamaño entre
un GIF animado y un MPG es considerable. Evidentemente, las animaciones GIF tinen
peor resolución que las MPG, y sólo están pensadas para fines sencillos.
La forma de incluir una imagen animada en el documento es la misma que una imagen
fija. No se requiere ningun tipo de programa ni script, todo está definido en la propia
imagen. Existen en la red en forma de shareware programas para hacer ficheros de
imágenes animadas. Su construcción es muy sencilla: sólo necesitas tener la serie de
imágenes que quieres animar e ir ensamblándolas con algún programa al efecto, definir
el tiempo entre imagen, el ciclo de repetición... y listo.
Los visualizadores que no soportan este efecto, lo que hacen es presentar solamente la
primera o la última de las imágenes de la secuencia. Hay que tener esto presente, y no
comenzar o terminar las secuencias con, por ejemplo, una imagen vacía.