.. highlight:: html .. _html-head: Cabecera ******** La cabecera del documento |HTML| es el contenido del elemento :code:`` e incluye información ajena al contenido estricto de la página |HTML|. .. note:: El orden de los elementos de la cabecera es indiferente. .. index:: title .. _html-title: .. table:: :class: el-html +--------------+----------------------------------------------------------+ | |title| | Define cuál es el título que el navegador mostrará en la | | | barra superior de la ventana. | +--------------+----------------------------------------------------------+ **title** (:devmoz:`title`) Su único contenido posible es simple texto. Por ejemplo:: Página de prueba Es el único elemento **obligatorio** que debe incluir la cabecera. El resto de etiquetas las agruparemos en: .. _html-style: .. _html-script: Etiquetas de complemento ======================== Son aquellas que permiten indicar qué código *Javascript* o |CSS| complementa el contenido |HTML| de la página. .. table:: :class: el-html +--------------+--------------------------------------------------------------+ | |style| | Permite declarar estilos |CSS| exclusivos para el documento | +--------------+--------------------------------------------------------------+ | |script| | Refiere o incrustar código *Javascript* | +--------------+--------------------------------------------------------------+ .. index:: style **style** (:devmoz:`style`) Volveremos a esta etiqueta cuando tratemos :ref:`cómo declarar el CSS aplicable ` a la página. Por ahora, bástenos con un ejemplo:: .. note:: Para referir estilo |CSS| que se encuentre en fichero aparte debe usarse |link|, que se explica un poco más adelante. .. note:: Al igual que con |link|, puede usarse un atributo :code:`title` para dar nombre al estilo. .. index:: script **script** (:devmoz:`script`) Podemos usarla de dos formas. Como :code:` Etiquetas de relación ===================== Son aquellas que permiten establecer relaciones con otros documentos. .. table:: :class: el-html +--------------+----------------------------------------------------------+ | |base| | Establece la URL base para resolver rutas relativas | +--------------+----------------------------------------------------------+ | |link| | Establece una relación entre el documento y otro externo | +--------------+----------------------------------------------------------+ .. index:: base .. _html-base: **base** (:devmoz:`base`) :ref:`Al hablar sobre hiperenlaces ` se definió el :ref:`concepto de ruta relativa relativa ` y cómo formar la ruta absoluta se concatenan la |URL| base y la ruta relativa relativa (a partir de ahora, *ruta relativa* a secas). Este elemento permite redefinir la |URL| base para sea una distinta a la que se esperaría. Así, si nuestro documento tiene la |URL|: .. code-block:: none http://docs.iescdl.es/~josem/XML/05.web/01.html/03.head.html su |URL| base es: .. code-block:: none http://docs.iescdl.es/~josem/XML/05.web/01.html/ y las rutas relativas deberían añadirla para obtener la ruta absoluta. Sin embargo, este elemento permite definir una |URL| distinta. Por ejemplo:: En este caso, la |URL| base para los enlaces será: .. code-block:: none http://docs.iescdl.es/~josem/XML/ El elemento permite también definir el valor predeterminado para el atributo *target* de |a|: .. code-block:: html .. index:: link .. _html-link: **link** (:devmoz:`link`) Es el elemento que propiamente relaciona con documentos externos. Su uso es variado, pero se basa fundamentalmente en dar valor a dos de sus atributos: :code:`rel` y :code:`href`. * El uso más habitual es definir para la página hojas de estilos |CSS| externas:: En este caso el navegador aplicará las reglas de estilo y, si añadimos otro elemento más:: aplicará ambas. Sin embargo, puede añadirse un atributo :code:`title` para nombrar al estilo:: En este caso, tenemos: * Un estilo sin nombre, que el navegador aplica siempre, se encuentra en :file:`siempre.css`. * Un estilo de nombre "clasico" que se encuentra en las hojas de estilos :file:`estilos.css` y :file:`masestilos.css`. * Otro estilo de nombre "moderno" que se encuentra en la hoja :file:`otrosestilos.css`. El navegador aplicará los estilos sin nombre y sólo uno de los nombrados ("clasico" o "moderno" en el ejemplo). Cuál de los nombrados aplique el navegador, no está definido por la especificación, a menos que se especifique expresamente a través de un elemento |meta|. * Otro uso posible es definir versiones alternativas del documento en otros formatos o lenguas:: * Puede servir para definir cuál será el `favicon `_:: * Refiere a páginas que contienen información sobre determinados aspectos:: * Facilita a los buscadores la navegación por las páginas del sitio:: .. seealso:: Para conocer los valores que se pueden asignar al atributo *rel* consulte `la documentación al respecto en MDN `_. Etiquetas de metadatos ====================== Son aquellas que ofrecen metainformación sobre el contenido de la página. .. table:: :class: el-html +--------------+----------------------------------------------------------+ | |meta| | Declara metadatos | +--------------+----------------------------------------------------------+ .. index:: meta .. _html-meta: **meta** (:devmoz:`meta`) Los metadatos pueden definirse de muy diversos modos, aunque lo habitual es que se distingan unos de otros a través del atributo `name `_. Sin embargo, hay una excepción a ello muy importante: la definición de la codificación del documento: .. _html-meta-charset: .. code-block:: html que es recomendable incluir siempre, aunque no sea obligatorio, ya que la codificación predeterminado para los documentos |HTML| es, precisamente *UTF-8*. Otros metadatos que sí se definen con el atributo :code:`name` son: Metadatos sobre el **documento** * *Descripción* del documento:: * *Autor* del documento:: * *Generador* (aplicación que ha generado la página web):: *Software* con el que se ha creado la página. * Comportamiento de la *ventana visible del navegador*:: Consulte `esta entrada `_ para más información. Metadatos para **buscadores** * *Palabras clave* del documento, separadas por comas:: .. warning:: Esta etiqueta no suelen usarla los buscadores, ya que se presta a que se rellene con multitud de términos simplemente con el fin de posicionar mejor la página. * Indica a los buscadores si debe *indexar la página*:: Se pueden indicar *(no)index*, *(no)follow*, *(no)snippet* (mostrar fragmentos de la página en el buscador), *(no)archive* (guardar cacheo), *(no)imageindex* (no indexar imágenes para los buscadores de imágenes), *none* (equivale a *noindex* y *nofollow*). Fuera de este atributo :code:`name`, hay otros metadatos: Metadatos que equivalen a **campos** de cabecera |HTTP|: Para definirlos se utiliza el atributo `http-equiv `_. En este caso, el valor de :code:`http-equiv` define el nombre del campo, y el valor del atributo :code:`content`, el valor de ese mismo campo. Sin embargo, no pueden definirse metadatos para todos los campos definidos en el protocolo y, de hecho, la especificación sólo reconoce unos pocos, algunos de los cuáles, no obstante, desaconseja. Algunos interesantes son: * *Redirige* a otra web después de un tiempo:: * Define el *estilo* predeterminado:: En este caso, :code:`content` introduce el nombre del estilo que el navegador debe considerar predeterminado y que debe coincidir con el nombre que se le haya dado a través del atributo :code:`title` en los elementos |link| o |style|. * También, aunque sólo para la variante |HTML| y no la |XML|, es aún permitido por la especificación `content-type `_ para definir el tipo de documento y la codificación:: .. warning:: Este método, que se usaba en la versión 4 de |HTML| y es aún adminitido, es **mejor no usarlo**, ya que es incompatible con el ya comentado :ref:`charset `, que es modo moderno de indicar la codificación. Se cita, simplemente, por razones históricas. .. caution:: Otros valores para :code:`http-equiv`, que llegaron a usarse, se consideraron en algún momento **obsoletos** y es probable que ya no tengan soporte en los navegadores:: Metadatos para **redes sociales** Algunas redes sociales como Facebook_ o Twitter_ son capaces de leer ciertos elementos :code:`` con el objeto de crear automáticamente enlaces a la página: Facebook_ .. code-block:: html .. seealso:: Puede echar un vistazo a la `web del Open Graph Protocol `_ Twitter_ .. code-block:: html .. seealso:: En *DigitalOcean* tienen `pequeño tutorial al respecto `_. Ejercicios propuestos ===================== .. include:: /99.ejercicios/60.html-head.rst :start-line: 3 :end-line: 79 .. Desarrolla algunos elementos bien: https://html5andcss3.org/html5history.php .. |HTTP| replace:: :abbr:`HTTP (HyperText Transfer Protocol)` .. |link| replace:: :ref:` ` .. |style| replace:: :ref:`