HTML y CSS Departamento de Informática I. E. S. Villa de Aspe. 1 I. E. S. Villa de Aspe Departamento de Informática Índice Apuntes de CSS Objetivos y alcance de este documento.........................................................................3 Analogía para describir HTML y CSS..............................................................................4 Repaso de HTML...........................................................................................................8 ¿Qué es HTML?......................................................................................................8 Elementos del HTML...............................................................................................9 Etiquetas más comunes de HTML............................................................................11 Elementos de bloque y en línea..............................................................................12 Tablas.................................................................................................................13 Creación de página HTML.......................................................................................14 Otros elementos y caracteres especiales..................................................................14 Doctype...............................................................................................................18 Sección <head>...................................................................................................18 CSS........................................................................................................................20 ¿Qué son las hojas de estilo?.................................................................................20 Formas y preferencias al aplicar estilos....................................................................21 Modelo de Cajas...................................................................................................26 Propiedades CSS..................................................................................................28 Unidades de medida..............................................................................................29 Colores................................................................................................................29 Elementos HTML div y span...................................................................................31 Posicionamiento de cajas.......................................................................................32 Versiones HTML / XHTML...........................................................................................36 2 Departamento de Informática I. E. S. Villa de Aspe Objetivos y alcance de este documento Para sacar el máximo partido a un editor de páginas web como Kompozer, es aconsejable que conozcamos los elementos esenciales de los HTML y CSS. Nos ayudará a crear mejores páginas y a tener un mayor control sobre el diseño de las mismas. Alguien preguntará ¿pero no aprende uno a utilizar un editor como Kompozer precisamente para evitar 'enredarse' con esos lenguajes? Bueno, en cierta manera sí y no. Sí, en el sentido de que no tenemos porque tener memorizados o conocer al detalle todas las etiquetas y propiedades, sus atributos y sintaxis: el programa nos va ayudar en esta tarea de una manera muy intuitiva. Esa ayuda, en forma de botones, menús y en definitiva de una interfaz gráfica fácil de entender, va a ser mucho más productiva si intentemos comprender qué estamos haciendo, o mejor dicho, qué está haciendo el programa por nosotros. Además, nos ayudará a construir páginas cada vez mejor diseñadas. Vamos a ver que tanto HTML como CSS no son lenguajes de programación sino de marcado, descriptivos de la estructura y presentación de la página que creamos, y por tanto de mucha menor complejidad. Sus fundamentos y aplicación están al alcance de una persona sin especiales conocimientos informáticos. En cualquier caso, los apartados que vienen a continuación, no pretenden ser un manual exhaustivo de HTML/CSS. Es solo un resumen completo para que nos sintamos cómodos y no nos perdamos, trabajando con estos lenguajes al utilizar un editor de páginas web como KompoZer. A partir de aquí, nuestro consejo es que sigáis aprendiendo para dominar mejor estos lenguajes. Hay múltiples recursos (cursos, libros, tutoriales, páginas web) disponibles sobre este tema, entre ellos se encuentran los siguientes: http://html.conclase.net/tutorial/html/ http://es.html.net/ 3 Departamento de Informática I. E. S. Villa de Aspe Analogía para describir HTML y CSS Vamos a emplear una analogía que nos puede ayudar a comprender mejor el papel de cada uno de estos lenguajes. Consideremos una noticia en un periódico que llega al redactor jefe tal como aparece en la imagen de abajo, como 'texto sin formato' (esta analogía no pretende ser un fiel reflejo del proceso de publicación en un periódico, tan solo una situación que podamos entender fácilmente). Vemos que el texto es legible, pero no es fácil comprenderlo, al menos en una primera lectura rápida. El redactor, para preparar la noticia para su publicación marca con rotuladores la estructura de la misma: dónde empieza y acaba la noticia, y sus diferentes partes (titular, subtítulo principal, la fuente de la que proviene la noticia y los distintos párrafos que la componen...). Una vez marcada su estructura, y de acuerdo a la página del periódico donde se vaya a publicar, el espacio que le vayan a dedicar y en general las normas de estilo de dicho periódico, se definirá para esos elementos marcados que presentación tendrán, como por ejemplo el diseño (o 'layout') o las tipografías a utilizar. Ilustración 1: formateando una noticia de un medio impreso. Analogía con HTML/CSS 4 Departamento de Informática I. E. S. Villa de Aspe Para comprender mejor la analogía que estamos planteando, este marcado a mano de la estructura o semántica del contenido de la noticia, podríamos representarlo (o haberlo hecho) de una manera más detallada, utilizando etiquetas de inicio y fin para cada elemento que ha identificado el editor. Para ello, utilizaremos brackets (paréntesis angulados) '< >'. Ilustración 2: marcado de una noticia con etiquetas. Similitud con HTML A partir de este ejemplo, veamos el paralelismo que guarda con HTML y CSS. Si nos fijamos en la siguiente imagen: 5 Departamento de Informática I. E. S. Villa de Aspe Ilustración 3: Funciones del HTML y de CSS el lenguaje HTML juega el papel de las marcas o anotaciones que realizaba el redactor: definen la estructura del documento, la semántica del contenido, lo que podríamos denominar el marcado lógico del documento. Si vemos con más detenimiento, las etiquetas que identifican el fin de un elemento llevan el caracter '/'. Podemos ver que marcamos un inicio y un fin de la noticia (o en este caso, página) con las marcas <html> y </html> respectivamente. Podemos adivinar también marcas para los elementos destacados de la noticia, distintos al cuerpo de la misma: <h1>, <h2>, <h3> y <h4> con sus respectivas acotaciones o finales: </hx>, que corresponden al titular, subtítulo, autor y origen de la noticia. También podemos distinguir etiquetas para los párrafos (<p>), otras que parecen definir secciones de la página (<div id=”titulares”, “columna izquierda”, “columna derecha”>) y otras que quizás ahora no entendamos del todo (<head>, <title>, <body>) y que iremos viendo. A partir de este marcado HTML, el lenguaje de hojas de estilo (CSS) nos permitiría definir la presentación o apariencia de dicha página web, mediante la aplicación de determinadas reglas de estilo a cada elemento identificado en el contenido. 6 Departamento de Informática I. E. S. Villa de Aspe Comentario: en este ejemplo, el etiquetado no es exactamente igual al realizado por el redactor. Aparecen elementos que tienen más que ver con la presentación, como <div id=”columna_izquierda> y el <div id=”columna_derecha”> y en cambio no vemos el mismo significado semántico que conseguíamos con la etiqueta <fuente>. Ambas objeciones son correctas, pero recordemos que utilizamos una analogía, no una transcripción literal, para ayudarnos a comprender el papel de HTML y CSS. Los divs 'columna' no marcan la estructura interna del documento, pero nos sirven para aplicar estilos posteriormente. HTML 'ayuda' en algunas funciones de presentación (de hecho, hasta aparecer CSS, las ejercía él). En cualquier caso, no dice cómo hay que presentar esos 'bloques'; podría decidirse que “columna_izquierda” fuera arriba y “columna_derecha” abajo, o no haber hecho nada con ellos. Es CSS la que lo determina como se presentarán. Igual ocurre con <fuente>. Podríamos haber definido un bloque con la etiqueta <div id=”fuente”> englobando a <h3> y <h4>. La flexibilidad de HTML, principalmente a través de los identificadores 'class' e 'id' que podemos colocar en ciertas etiquetas (y que veremos más adelante) le permite ir más allá, pero no vamos a profundizar para no apartarnos de lo que pretende ser un sencillo ejemplo introductorio 7 Departamento de Informática I. E. S. Villa de Aspe Repaso de HTML ¿Qué es HTML? Una vez presentados los conceptos generales, vamos a dar definiciones más precisas. HTML son las siglas de: Lenguaje de Marcado (o Anotación) de Hipertexto ('HyperText Markup Language') No es propiamente un lenguaje de programación, sino de marcación, diseñado para estructurar documentos mediante etiquetas. Estas etiquetas no se visualizan, pero indican al navegador (recordemos, los programas que nos ayudan a visualizar las páginas web en Internet: Firefox, Internet Explorer,...) qué tipo de contenido es, para que pueda tratarlo/mostrarlo adecuadamente (por ejemplo: si es una cabecera, un párrafo o una tabla). Por supuesto esto incluye uno de los elementos principales, que de alguna manera es la seña de identidad del HTML: los enlaces de hipertexto, que conectan a esa página con otros páginas, permitiendo al usuario 'navegar' por ese sitio y por todos los sitios web a los que esté enlazado utilizando el protocolo HTTP (*). Aunque originalmente el HTML permitía también indicar el formato de presentación, lo que denominamos marcado físico, a partir de la versión 4, esa función se encomienda (**) a un lenguaje de presentación específico: CSS, al que se conoce como 'Hojas de Estilo'. Nota (*): HTTP: Protocolo de Transferencia de Hipertexto (HyperText Transfer Protocol): es el sistema por el cuál se envían las peticiones para acceder a una página web (el navegador/cliente) y la respuesta de esa web (servidor) remitiendo la información. Nota (**): según especificaciones del W3C, “Consorcio de la WWW” Organismo encargado de coordinar y establecer los estándares en Internet. Lo han definido muy acertadamente como 'la ONU de Internet': no siempre los actores principales, como las empresas que desarrollan software y que además forman parte de él, siguen a rajatabla sus recomendaciones. 8 Departamento de Informática I. E. S. Villa de Aspe Elementos del HTML Las páginas HTML se construyen con elementos que son identificados mediante etiquetas. Estos elementos pueden definir: 1) Los 'contenedores' principales de la propia página (algo así como el armazón) página HTML debe tener al menos esta estructura: Toda Ilustración 4: estructura de una página HTML Nota: también es recomendable incluir antes de <html> el Doctype de la página (en xhtml es obligatorio). Lo veremos más adelante. 2) Las distintas partes del contenido de la página: un encabezamiento un párrafo, una lista, una tabla, una imagen, un enlace,... (veremos más adelante las más comunes) 3) Información sobre la página (las meta-etiquetas ó 'metatags') que no se muestra por el navegador (p.ej.: el autor, descripción, conjunto de caracteres empleados,...) Salvo algunas pocas excepciones, la parte de contenido que define una etiqueta se delimita mediante una etiqueta de apertura y otra de cierre: 9 Departamento de Informática I. E. S. Villa de Aspe Las etiquetas pueden incluir información adicional mediante los atributos, que permiten: • Que un mismo elemento sea tratado de forma diferente. P.ej: <h1 style=”font-family: Arial”> (indica un tipo de fuente particular para h1) • Especificar algún valor necesario para ese elemento P.ej: <a href=”http://iespascualcarrion.edu.gva.es”>IES SAX</a> (indica a qué página enlaza ese vínculo) La estructura general de una etiqueta con atributos sería: Ilustración 5: estructura general de una etiqueta HTML 10 I. E. S. Villa de Aspe Departamento de Informática Etiquetas más comunes de HTML Vamos a listar algunas de las etiquetas más utilizadas. Puedes consultar todas en algunas de las páginas que indicamos en http://www.delicious.com/tallercpep/html. <title></title> título de la página que se muestra en el navegador <hx></hx> encabezamientos de orden/nivel x=1, 2, 3, 4, 5 ó 6 <p></p> párrafo <br> (ó <br/> salto de línea (no tiene etiqueta de cierre) <hr> (ó <hr/>) línea horizontal <div></div> división de contenedor) <span></span> selecciona / delimita una porción de contenido <table></table> tabla <tr></tr> fila de la tabla <td></td> celda de la tabla <ul></ul> lista no numerada <ol></ol> lista numerada <li></li> cada elemento (item) de la lista <img> (ó <img />) Imagen. En esta etiqueta deberemos indicar cuál es el fichero la página (define un área/sección como imagen que utilizamos. Para ello empleamos el atributo src (source: fuente), donde incluimos la URL (dirección) absoluta o relativa del fichero : <img src”...” /> <a></a> Enlace. En esta etiqueta debemos indicar la página web a la que enlazamos. Para ello usamos el atributo href, donde incluimos la URL (dirección) absoluta o relativa de dicha página: <a href=”...”></a>. También es posible crear enlaces internos a zonas dentro de la propia página con el atributo name. <em></em> texto enfatizado (itálica) <strong></strong> texto enfatizado (negrita) <!-- --> Comentarios. Para insertar comentarios en la página (no se procesan ni se muestra en el navegador) 11 Departamento de Informática I. E. S. Villa de Aspe Comentario: algunas etiquetas de presentación se descartaron en la versión HTML 4 (ver apartado versiones HTML) en favor del lenguaje CSS específico para definir estilos. Aunque son 'obsoletas', los navegadores suelen visualizarlas bien y aunque cada vez menos, se siguen utilizando en muchos webs. Ejemplo destacado: la etiqueta <font> que define las características de la fuente. Aconsejamos introducir las etiquetas en minúscula. Proporciona mayor claridad y uniformidad y cumple los estándares HTML y XHTML Elementos de bloque y en línea Un concepto importante que influye en las propiedades y tratamiento de los elementos de contenidos, es la clasificación que HTML hace de ellos en dos grupos: • Elementos de bloque: ◦ empiezan en una nueva línea y ocupan todo el espacio disponible hasta el final de la línea. ◦ pueden contener elementos en línea ◦ algunos pueden contener a su vez otro elementos de bloque (por ejemplo, el elemento div, que se utiliza como contenedor y que veremos más adelante) ◦ los bloques se apilan de arriba a abajo, es decir, cada uno ocupa todo el ancho de la página, colocándose debajo del bloque que le precede en el código (X)HTML. ◦ Ejemplos: encabezamientos, párrafos, listas, tablas, divisiones,.. • Elementos en línea: ◦ ocupan el espacio necesario para mostrar su contenido ◦ no pueden contener elementos de bloques ◦ siguen un flujo izquierda-derecha y arriba-abajo, es decir, se colocan al lado derecho del anterior elemento en línea, salvo que no haya suficiente espacio disponible, en cuyo caso se colocarán debajo, lo más a la izquierda posible. ◦ Ejemplos: enlaces, imágenes, énfasis,... En el apartado de estilos (CSS), al explicar el modelo de cajas, volveremos sobre estas características y el tratamiento que tienen a la hora de disponer los elementos en la página. 12 Departamento de Informática I. E. S. Villa de Aspe Tablas Por ser un elemento muy utilizado con múltiples opciones, vamos a hacer una breve reseña de ellas. En la imagen vemos la representación de una tabla muy simple, de dos filas y dos columnas, visualizando los elementos que corresponden a las etiquetas: • <table> (tabla) • <tr> ('table row', es decir, fila) • <td> ('table data', celda). Vemos que no existe ninguna etiqueta 'columna'. En su lugar empleamos las 'celdas' definidas en cada 'fila' para delimitarlas. Ilustración 6: visualización etiquetado de tablas en HTML Además de estos elementos básicos, las tablas pueden contener otros como: <thead> (cabecera), <tbody> (sección), <tfoot> (pié), <caption> (título) ó <th> (celda de cabecera). También pueden realizarse tablas con estructuras más complejas, por ejemplo uniendo columnas o filas mediante los atributos colspan y rowspan, respectivamente, en la etiqueta <td>. Podemos asimismo, fijar los tamaños (anchuras, alturas, espacio entre celdas, …), tipo de bordes, fondos, y otra serie de propiedades. No vamos a entrar en todas las posibilidades que nos ofrecen las tablas ya que excede de esta breve introducción. No obstante, con un editor de páginas web, el tratamiento de las mismas es similar al que podemos tener en un procesador de texto avanzado, con opciones de menú en la barra de herramientas, menús contextuales y otras ayudas que facilitan enormemente la tarea. 13 Departamento de Informática I. E. S. Villa de Aspe Creación de página HTML Para crear una página HTML simplemente debemos generar un documento de texto sin formato que incluya el contenido de la página, estructurado con las etiquetas adecuadas, y guardándolo con la extensión '.html' Aunque si utilizamos un editor de páginas web como KompoZer ya nos guarda la página con dicha extensión, podríamos hacer una prueba con algún editor de textos simple, como el 'Bloc de Notas' (ó Notepad), que viene instalado por defecto en Windows o bien el Editor de Textos Gedit que viene incorporado en Linux. Si utilizas Gedit, accede al programa en Aplicaciones/Accesorios/Editor de Textos y puedes crear esta sencilla página (prueba.html): Ilustración 7: fichero de texto guardado como página web Otros elementos y caracteres especiales Para finalizar esta rápida introducción al etiquetado HTML, mostramos otro ejemplo de página Web, donde además de encabezamientos y párrafos, incluimos algunos de los elementos más usuales: • Listas (en este caso no numerada) • Imagen • Enlace • Tabla 14 Departamento de Informática I. E. S. Villa de Aspe Asimismo, se han incluido algunos caracteres especiales como 'espacios en blanco', símbolo '&', vocales acentuadas,...para los que necesitamos un tratamiento especial en HTML. Para ello podemos emplear los denominados 'Entidades de Caracteres HTML' que permiten resolver los siguientes problemas: • emplear caracteres que tienen un significado en HTML y que por lo tanto podrían confundirse con parte del lenguaje si los utilizamos tal cual en el texto: < > & ' ” • poder introducir varios espacios en blanco seguidos, • introducir caracteres/símbolos que no están representados en nuestro teclado. • emplear, con la seguridad de ser representados adecuadamente, caracteres del lenguaje que no pertenecen al conjunto mínimo común ASCII. Por ejemplo en español las vocales acentuadas o la ñ, particulares de nuestro idioma (o por ejemplo, la ç ó los acentos circunflejos en otros casos). Aunque en principio si utilizamos un conjunto de caracteres como UTF-8, éstos están contemplados, la página pasará por diferentes programas y sistemas operativos (navegador usuario, servidor web,...) y corre el riesgo de que algún eslabón de la cadena no se utilice dicha codificación y la conversión no se haga correctamente. En el propio texto de la página se explican sus características y como incluirlos con la expresión &código; (si bien, es algo de los editores HTML, como Kompozer, hacen automáticamente sin necesidad de que tengamos que recordar dichos códigos) Elementos div y span: aunque son elementos de HTML, dada su estrecha relación con la aplicación de estilos, los veremos en la sección dedicada a CSS 15 Departamento de Informática I. E. S. Villa de Aspe Ilustración 8: página web con caracteres especiales en su contenido (ver código HTML en imagen siguiente) 16 Departamento de Informática I. E. S. Villa de Aspe Ilustración 9: código HTML correspondiente a la imagen anterior 17 Departamento de Informática I. E. S. Villa de Aspe Doctype Al inicio de la página, antes de la etiqueta <html> los editores de páginas web como KompoZer incluyen una declaración indicando que norma HTML ó XHTML seguimos y si lo hacemos de forma estricta o no, (según lo hayamos definido previamente) para que el navegador la interprete adecuadamente. La ausencia de un Doctpe, podría hacer que algunas versiones de navegadores entren en lo que se denomina 'quirck mode' con una incorrecta visualización de la página (esta cuestión es un poco más enrevesada de lo que comentamos aquí tan brevemente. Si quieres conocer más o en detalles sobre esto puedes consultar: http://www.quirksmode.org/css/ http://www.cs.tut.fi/~jkorpela/quirks-mode.html). No debemos preocuparnos por lo farragoso de la expresión, un editor como Kompozer la colocará automáticamente mediante una sencilla selección de menú. Un ej.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> En esta página de wikipedia (http://es.wikipedia.org/wiki/DOCTYPE) diferentes versiones de Doctype y su explicación. podemos ver las Al final de este documento hemos incluido un apartado, explicando brevemente las diferentes versiones de los lenguajes (HTML/XHTML) Sección <head> Como indicamos al principio de esta introducción, las páginas HTML se dividen en dos secciones: el cuerpo, delimitado por las etiquetas <body></body> y donde incluimos el contenido a visualizar en la página y una sección cabecera, delimitado por las etiquetas <head></head>. En esta sección <head>, incluimos meta-etiquetas con información acerca de la página, que no se visualiza en el navegador (salvo la etiqueta <title>, que aparece como título de dicha página en la pestaña del navegador). En un editor de páginas web como Kompozer vemos que estos datos se pueden configurar en un menú de propiedades para que se introduzcan automáticamente o bien, editarlos si queremos introducir algún cambio. Mostramos un ejemplo de algunas de estas meta-etiquetas: 18 Departamento de Informática I. E. S. Villa de Aspe Ilustración 10: Meta-etiquetas en sección <head> 19 Departamento de Informática I. E. S. Villa de Aspe CSS ¿Qué son las hojas de estilo? Una vez creada la estructura del documento y definido sus contenidos a nivel semántico con (X)HTML, podemos darle una apariencia y presentación personalizada mediante la utilización de CSS (Hojas de Estilo en Cascada / 'Cascade Style Sheets' ). Con CSS podemos indicar el aspecto de cada elemento de la página, como por ejemplo, el tipo de letra de un título, el color con que se mostrará un enlace o el interlineado de un párrafo o una lista. También veremos que CSS puede posicionar y dimensionar los distintos bloques de la página, de forma que podamos establecer la disposición de todos los elementos en la misma. Solo haremos una breve introducción para ver los conceptos básicos de CSS que nos ayuden a entender mejor el diseño y la construcción de Sitios Web. Ilustración 11: aplicación de estilos de presentación a una página web con CSS 20 Departamento de Informática I. E. S. Villa de Aspe Formas y preferencias al aplicar estilos Las Hojas de Estilo (ó Estilos) se pueden incluir de 3 formas diferentes: • Estilo en línea: definido dentro de las propias etiquetas HTML • Hoja de estilo interna: en la sección <head> del mismo documento HTML • Hoja de estilo externa: en un archivo diferente al documento HTML ¿Por qué se denominan hojas de estilos 'en cascada'? Pues porque estas tres formas de incluir estilos no son excluyentes y pueden combinarse (por ejemplo, utilizando una hoja de estilos externa general e incluyendo estilos en línea en algunas etiquetas del documento). En caso de conflicto, prevalece el estilo más 'interno'. La prioridad es: 1ª - estilo en linea --> 2ª - hoja estilo interna --> 3ª - hoja estilo externa Ejemplos: 1. Estilo en línea: <p style=”color: blue; font-family: Tahoma;”>Texto con fuente Tahoma azul</p> visualización: Texto con fuente Tahoma azul En el ejemplo de arriba, incluimos en una etiqueta párrafo <p>, el atributo 'style', cuyo valor son dos características de estilo de la fuente a mostrar: color azul y tipografía Tahoma. 21 I. E. S. Villa de Aspe Departamento de Informática 2. Hoja de estilo interna: 1. Incluimos las reglas de estilo entre las etiquetas: <style type=”text/css”>..................</style> 2. Elegimos el elemento (selector) al que queremos dar un determinado estilo de presentación (en este caso 'p': los párrafos) e incluimos entre llaves “{}” las características que vamos a aplicarle: p {font-family:...... ; (acabadas en ';') …................... ; } (podemos agrupar varios selectores (p,h1 {....}) y/o declaraciones) 3. Cada característica (declaración), se compone de una propiedad (p.ej. font-size - tamaño de letra) y un valor (en este caso:'large' – grande). 22 Departamento de Informática (Sax) Ilustración 12: estructura de una regla de estilo 23 Departamento de Informática 3. I. E. S. Villa de Aspe Hoja de estilo externa: Incluimos la etiqueta <link> (enlace) en la cabecera del documento HTML. En ella se describe: – rel: tipo de relación; “stylesheet”: hoja de estilo – href: la dirección URL donde se encuentra la hoja – type: tipo de archivo (una CSS) Creamos un fichero de texto sin formato donde incluiremos las reglas de estilo que se aplicarán a ese documento HTML. El nombre del archivo (y su dirección) debe coincidir con el incluido en el atributo 'href' de la etiqueta <link>. Debe guardarse con la extensión '.css' 24 Departamento de Informática I. E. S. Villa de Aspe La utilización de CSS respecto a las antiguas etiquetas de estilo de HTML confiere importantes ventajas, además de cumplir con los estándares y estructurar mejor los documentos. Dos de ellas son: la posibilidad de reutilizar las hojas para distintas páginas y facilitar el mantenimiento de un sitio web. Un simple ejemplo: podemos cambiar el tamaño del texto de todos los párrafos modificando simplemente en el en el selector 'p' de la hoja de estilo, sin tener que cambiar en cada etiqueta <p> de cada página web. 25 Departamento de Informática I. E. S. Villa de Aspe Modelo de Cajas Otra función muy importante de los estilos, es aplicar dimensiones y posición a los elementos HTML, basándose en el denominado Modelo de cajas, uno de los conceptos fundamentales de CSS. Según este modelo, los navegadores ven o tratan cada elemento en la página HTML como una caja rectangular. Recordemos que HTML diferencia dos tipos de elementos: bloques y en línea. De acuerdo a esas características la representación y disposición de los mismos en una página sería del tipo que mostramos en la siguiente imagen: 26 Departamento de Informática I. E. S. Villa de Aspe Estas cajas se componen de diversos elementos: CSS puede configurar las propiedades de estas cajas: dimensiones, espaciados de relleno interior (padding), borde, imagen de fondo, color de fondo y márgenes, como veremos en el apartado siguiente. Nota: este esquema de caja (contenido, padding, borde y margen) es tridimensional. Para completarlo, habría que añadir: 'imagen de fondo' y 'color de fondo'. Podemos verlo en este gráfico: http://www.hicksdesign.co.uk/boxmodel 27 I. E. S. Villa de Aspe Departamento de Informática Propiedades CSS Existen numerosas propiedades que pueden controlarse con CSS. No vamos a listar todos de forma exhaustiva, solo algunos ejemplos. En http://www.delicious.com/tallercpep/css indicamos algunos sitios web donde consultar la referencia completa de propiedades. Fuentes Texto Listas Fondo font-family: tipos (arial,verdana,...). Se puede especificar una lista de opciones. font-weight: grosor font-size: tamaño font-style: estilo (itálica,..) color: color text-decoration: efectos (subrayado,...) text-align: alineación line-height: interlineado text-indent: tabulación letterspacing:espaciado entre letras background-color: list-style-type: tipo color de background-image: viñeta (círculo, poner una imagen cuadrado, background-repeat: como se repite la número,letra...) imagen de list-style-image: fondo utilizar imágenes en las (vertical,horizontal,..) backgroundviñetas position: list-style-position: alineación texto con posición imagen de fondo viñeta Algunas propiedades relacionadas con el modelo de cajas Contenido Borde width: anchura height: altura line-height: distancia entre líneas overflow:mayor que el espacio asignado (scroll, ocultar,mostrarl..) border-width: anchura border-style: tipo (linea, puntos,guiones...) border-color: color Padding y Márgenes padding: anchura de la zona de relleno margin: anchura de los márgenes Pueden aplicarse valores distintos a cada lado: arriba (top), derecha (right), abajo (bottom), izquierda (left) Ejemplos: margin-top padding-right border-width-bottom border-style-left 28 I. E. S. Villa de Aspe Departamento de Informática Además, CSS puede alterar el flujo normal en que se disponen estas cajas en la página, definiendo la forma en que se posicionarán y visualizarán, lo que nos permite establecer el layout de la misma. Lo veremos en el apartado de Posicionamiento. Unidades de medida Los valores para propiedades que tienen dimensión (p.ej.,tamaño de letra, anchura de márgenes/padding, grosor bordes,...), pueden definirse de forma muy diversa: valores relativos valores absolutos Pixels (px) (relativa resolución de pantalla) respecto a Milímetros (mm) y centímetros (cm) Puntos (pt) y picas (pc) (1 pc = 12 pt) Pulgadas (in) (1 pulgada = 72 puntos) la Porcentajes (%) factor escala (em) (% y em, respecto al tamaño de fuente del elemento padre. Ej: body: 14px --> h1: 1.2 em = 17px; h1: 150% = 21px) respecto a la altura de la letra 'x' (ex) Expresiones: (xx-/x-) small, medium, (x-/xx-) large, smaller, larger Por el carácter de esta introducción, no podemos ver en detalle todos los posibles valores que pueden tomar las diferentes propiedades. En cualquier caso, al trabajar con un editor de html como Kompozer. veremos que no es imprescindible (al igual que sucede con la sintaxis de las propiedades) conocer todas estas abreviaturas/expresiones, ya que podemos seleccionar los valores mediante menús. Colores Los colores en HTML/CSS se definen por una combinación (suma) de los tres colores primarios: rojo, verde y azul (modelo RGB: red-green-blue). Los colores que podemos aplicar resultan de la combinación de un valor (entre 0-255) de cada uno de estos 3 colores. Estas combinaciones pueden especificarse de formas distintas en CSS: • Notación en porcentaje: rgb(x%, y%, z%) (x,y,z entre 0-100): Ej: rgb(90%, 27%, 32%) • Notación absoluta decimal: rgb(x, y, z) (x,y,z entre 0-255). Ej: rgb(203, 0, 15) • Notación absoluta hexadecimal: #xxyyzz (xx,yy,zz entre 00 y ff): Ej.:#23a73f • Con un nombre en inglés (no pueden utilizarse todos, solo un subconjunto. Ver tabla con palabras clave en la imagen más abajo). Ej: red, blue.... 29 I. E. S. Villa de Aspe Departamento de Informática Ilustración 13: modelo RGB (imagen de Wikipedia) Ilustración 14: Colores definidos en CSS(Imagen procedente de la especificación del W3C) Al utilizar un editor web como Kompozer, podremos seleccionar visualmente los colores y convertir entre notaciones, sin necesidad de conocer estos códigos. Además, existen múltiples herramientas complementarias para gestionar los colores de un web 30 Departamento de Informática I. E. S. Villa de Aspe Elementos HTML div y span Explicamos brevemente dos elementos HTML que nos permiten delimitar contenidos y áreas en la página: • span: permite delimitar un contenido interior mediante las etiquetas <span></span> y darle un estilo particular distinto al elemento en que se encuentra. Por ejemplo, escoger solo una parte de texto en un párrafo y darle otro formato: <p>Este párrafo <span style=”color:red”;>tiene esta parte de texto en rojo</span> y esta parte no.</p> Mostraría en el navegador: Este párrafo tiene esta parte de texto en rojo y esta parte no. • div: es un elemento de bloque que permite delimitar contenedores (denominadas divisiones o capas) mediante las etiquetas <div></div>, pudiendo englobar múltiples elementos. Utilizando los elementos <div> con los atributos de identificación 'id', podemos estructurar lógicamente nuestro documento, diferenciando distintas secciones dentro del mismo: cabecera, menú, multicolumnas, pie... Con CSS, podemos aplicar a estas secciones dimensiones y posicionamiento en la página, es decir, configurar su visualización, rompiendo el flujo que siguen por defecto de acuerdo al modelo de cajas que vimos anteriormente. Esto nos permite maquetar la página, es decir, diseñar su presentación estableciendo la disposición de los distintos elementos en la misma (lo que se denomina layout). Describiremos este aspecto en un apartado posterior. Atributos id y class Podemos aplicar estilos a un conjunto particular de selectores utilizando los atributos 'class' e 'id' en las etiquetas HTML, permitiéndonos identificar elementos concretos en la página. • class: incluyendo este atributo con un nombre (<selector class = ”nombre”>) podemos aplicar estilos diferenciados a esos selectores, refiriéndonos a ellos en la hoja de estilo con: selector.nombre • id: misma función que 'class' pero se utiliza para un único elemento (<selector id=”nombre”>). En la hoja de estilo los identificamos con la expresión: selector#nombre 31 I. E. S. Villa de Aspe Departamento de Informática Ilustración 15: atributo Class: modos y ejemplo de aplicación Posicionamiento de cajas Como comentamos anteriormente, podemos alterar el flujo normal de la disposición de las cajas mediante CSS. Para ello contamos con dos propiedades: position (posicionamiento) y float (posicionamiento flotante). Vamos a describir su funcionamiento a través de los valore que pueden tomar: • Position: esta propiedad se puede aplicar a cualquier elemento y permite establecer donde se mostrará éste en la página. Los valores que puede tomar son: ◦ static (estático ó normal): es el valor por defecto. El elemento se posicionará según el flujo normal del documento. (ver apartado elementos de bloque y en línea) ◦ relative (relativo): se desplaza en los ejes horizontal y vertical respecto de su posicionamiento normal (valor static), según el espacio que indiquemos. El resto de cajas no se ven alteradas en cuanto a su ubicación. ◦ absolute (absoluto): se desplaza horizontal y/o verticalmente como el relativo pero con dos diferencias: la referencia la toma del primer elemento padre posicionado y la caja sale totalmente del flujo del documento, ses decir, otras ocupan el espacio que deja vacío al desplazarse. ◦ fixed: igual al absoluto salvo que la caja permanece inamovible en la ventana del navegador, aunque hagamos scroll en ella ◦ float: la describimos más adelante 32 Departamento de Informática I. E. S. Villa de Aspe Como puede deducirse de su definición, aplicar cualquiera de las tres últimas propiedades puede producir solapamientos con otros elementos de la página. Para establecer cuánto se mueve la caja, se utilizan las propiedades top, right, bottom, left (arriba, derecha, abajo, izquierda) con valores que pueden especificarse en unidades de medida absolutas o relativas. Para visualizar de forma genérica como se calcula ese desplazamiento, mostramos en la siguiente imagen un elemento (caja verde) con un movimiento referenciado a dos elementos distintos. Respecto al elemento body (representado por el rectángulo mayor con origen de coordenadas indicado por la cruceta en la parte superior izquierda de la imagen) se desplaza 18px a la derecha (right) y 10 px hacia abajo (down). Respecto al div central, se desplaza 6 px arriba (top) y 10px a la derecha (right). Ilustración 16: referencias de posicionamiento Para consultar más en detalle estas propiedades y visualizar su efecto en algunas imágenes, puedes consultar por ejemplo este capítulo sobre posicionamiento de un libro on-line sobre CSS o el web de w3school.com (en inglés) donde podrás hacer incluso ejercicios interactivos. 33 Departamento de Informática • I. E. S. Villa de Aspe Float: esta propiedad hace moverse al elemento tan a la izquierda o la derecha de la página como le sea posible, según tenga el valor left o right respectivamente. Las características principales de este desplazamiento son: ◦ el elemento sale del flujo normal del documento; en ese momento el resto de cajas ocupan su lugar y a continuación la caja flotante se posiciona lo más a la izquierda o derecha posible según se haya definido ◦ aunque la caja puede posicionarse sobre otra que haya ocupado su lugar, los elementos en línea (por ejemplo el texto) hacen sitio y adaptan su anchura al espacio libre que deja esa caja flotante (lo que se denomina reflow, es decir, refluyen, como si depositaramos un elemento sólido en la corriente de un fluido) ◦ si hay varias cajas flotantes, se respetan entre ellas la posición, es decir, no hay solapamientos y se alinean según su orden en el código HTML. Por ejemplo, si hay 2 divs flotantes a la derecha, el primero que se define se sitúa a la derecha del todo, y el siguiente se pondrá a su izquierda, pegada a la anterior (lo más a la derecha posible) y si no tiene espacio en esa línea, pasará a la derecha de la línea siguiente. ◦ existe otra propiedad, clear (que en este caso podríamos traducir por 'despejar'), que se utiliza normalmente en conjunto con float y que impide a un elemento que se posicione a un lado un otro o a ambos (valores right, left, both) de una caja flotante, pudiéndole obligar a que se desplace hacia abajo a una nueva línea. En la siguiente imagen, mostramos el ejemplo que citábamos del comportamiento de 3 cajas a las que se aplica la propiedad float con valor a la derecha. Puede consultarse más en detalle en las mismas referencias que dábamos para la propiedad position 34 Departamento de Informática (Sax) I.E.S. Villa de Aspe Ilustración 17: aplicación de la propiedad 'float' 35 Departamento de Informática I. E. S. Villa de Aspe Versiones HTML / XHTML Desde 1989 en que se publicó la primera versión de HTML, ha habido una evolución de este lenguaje, marcado principalmente por dos facetas: • la incorporación de nuevas etiquetas que permitieran ampliar la 'funcionalidad' del lenguaje (muchas de ellas, en un principio, fueron adopciones de características que iban incorporando de forma particular, fuera del estándar, los navegadores más utilizados en el mercado como Netscape Navigator y posteriormente Microsoft IE). • La separación paulatina de las funciones de estructurar y presentar el contenido de las páginas web. En las primeras versiones, HTML comprendía ambas facetas y a partir de 1998, con HTML 4.0 se empiezan a separar, descartando muchas de las etiquetas relacionadas con la presentación en favor de un nuevo lenguaje, el CSS 2 (hojas de estilo en cascada) al que se encomienda esta tarea. En el año 2000, se publicó un nuevo estándar: el XHTML 1.0, una adaptación del HTML a las normas del XML (otro lenguaje de marcaje). XHTML es muy similar en sintaxis al HTML 4, aunque con una serie de reglas XML algo más estrictas , entre otras, que las etiquetas han de escribirse en minúsculas (*) (aún podemos ver muchas páginas en HTML con etiquetas en mayúsculas, ya que éste no las diferencia de las minúsculas. Para muchos autores de páginas web, cuando utilizaban editores sin resaltado de código, se les hacía más fácil distinguir las etiquetas del contenido de esta forma). Actualmente conviven distintas 'variantes' en la última versión de HTML 4.01: TransitionalStrict y Frameset, las dos primeras relacionadas con la permisividad o restricción de uso respectivamente de etiquetas de presentación o físicas, y el tercero regulando el uso de frames ó marcos (aunque no se recomienda la utilización de estos últimos y por tanto, cada vez más en desuso). En XHTML, también se dan las variantes Transitional y Strict, que admiten o no, respectivamente, algunos elementos de HTML 4. Además se aprobó la versión XHTML 1.1 (2001) que introducía el concepto de modularización, para facilitar la creación de subconjuntos más reducidos o para ampliar el lenguaje según distintas necesidades, pero que ha tenido poca utilización. Para un próximo futuro, se está trabajando en fase de borrador en las nuevas versiones HTML 5, XHTML 2.0 y CSS3, si bien, la W3C decidió parar el avance de la nueva versión XHTML en favor de HTML 5. Algunos navegadores ya empiezan a incorporar algunas funcionalidades que se han propuesto en estas nuevas recomendaciones. 36 I. E. S. Villa de Aspe Departamento de Informática Respecto a qué versión conviene utilizar ahora para crear páginas, hay bastante discusión. La recomendaciones mayoritarias se centran lógicamente en las versiones HTML 4.01 ó XHTML 1.0 ambos en modo estricto (strict) si el web es nuevo y no tenemos necesidad de compatibilidad 'hacia atrás'. Aunque aparentemente el etiquetado en XHTML podría pensarse como más recomendable, algunos programadores expusieron argumentos en contra, quizás demasiado técnicos para alguien que empieza y no esté suficientemente familiarizado con HTML y XML, pero que dejaba la cuestión más en el aire. Además, la más que probable evolución a HTML5, resta atractivo a la opción XHTML (aunque siga siendo perfectamente válida). Para los muy interesados pueden ver un par de artículos (en inglés) sobre este tema: (Send XHTML as • Enviar XHTML como text/html, considerado peligroso considered harmful) • ¿HTML o XHTML: importa de verdad? (HTML or XHTML: does it really matter?) text/html Resumen de versiones • HTML 1.0 y 2.0 (1989, 1991) presentación • HTML 4.0 (1998) HTML 4.01 (1999): estructura + CSS 2 (1998): presentación. En estas versiones de HTML se dan distintas variantes: • XHTML 1.0 (2000): adaptación del HTML a las normas del XML (otro lenguaje de marcaje). XHTML es muy similar en sintaxis al HTML 4.01, aunque con una serie de reglas XML algo más estrictas . También se dan las variantes Transitional y Strict (admite o no algunos elementos de HTML 4) • XHTML 1.1 (2001): introduce el concepto de modularización para facilitar la creación de subconjuntos más reducidos o para ampliar el lenguaje según distintas necesidades. • HTML 5, XHTML 2.0 y CSS 3: están aún en fase borrador, si bien, la W3C decidió parar el avance de la nueva versión XHTML en favor de HTML 5. Algunos navegadores ya empiezan a incorporar algunas funcionalidades que se han propuesto en estas nuevas recomendaciones. HTML 3.0/3.2 (1995/1997): estructura + 37