Beruflich Dokumente
Kultur Dokumente
El objetivo de este curso es ensear a crear pginas web, partiendo desde cero y usando herramientas gratuitas. Para seguir el curso slo necesitas un ordenador y ganas de aprender, al final del curso podrs crear pginas como la que puedes ver haciendo clic aqu o aqu. El lenguaje que se utiliza para crear una pgina web es el HTML, Hyper Text Markup Lenguage (Lenguaje de Marcas de Hypertexto) Hay muchos cursos de HTML pero creemos que este es diferente porque pretende ser un curso integral de creacin de pginas web. Vamos a explicar brevemente que queremos decir con esto. Lo fundamental para escribir pginas web es saber HTML pero no es suficiente. Si quieres poner una imagen en tu pgina necesitars saber un poco sobre grficos web, para recortar la imagen al tamao adecuado, si quieres poner un men desplegable es conveniente que conozcas algo sobre JavaScript, si quieres recoger datos de los usuarios mediante un formulario es conveniente hacerlo con un lenguaje tipo PHP. Tambin es conveniente utilizar un editor web para facilitar la escritura de pginas web, como KompoZer, para que tu pgina sea agradable es conveniente saber algo sobre diseo web, y por ltimo para que todo el mundo mundial vea tu trabajo necesitars subir tu pgina a un servidor de Internet y darla a conocer. Pues bien, todo esto y un poco ms es lo que hay en este curso. Adems hemos intentado explicarlo de forma que lo pueda entender cualquier persona sin conocimientos previos sobre todos estos temas. Dicho as, parece una misin casi imposible, esperamos que sigas todo el curso y llegues al final cumpliendo estas espectativas. Es un reto complicado pero esperamos crear un curso que sea un punto de partida a este apasionante mundo de la comunicacin global a travs de Internet y te dote de la visin general que te permita avanzar hasta lograr crear pginas web atractivas y completas. A final del curso estamos seguros que logrars crear conocimiento y ponerlo a disposicin de las personas, y algo del espiritu de colaboracin y gratuidad desde el que est hecho este curso quizs llegue a contagiarte un poco. Se acaba dando parte de lo que se recibe.
Por supuesto, tratar todos estos temas en profundidad exigira un curso de un tamao enorme, pero el objetivo es dar una introduccin a cada tema, de forma que el alumno se pueda desenvolver en las tareas bsicas y tenga las nociones suficientes para poder ampliar lo que ms le interese en otros sitios. Por esto, al final de los ltimos temas hemos puesto unas cuantas direcciones con lo mejor de la red en ese tema.
1.2. Contenidos
Para que sea ms facil de entender hemos desarrollado el temario de forma progresiva mediante la creacin de un sitio web sobre flores, introduciendo cada concepto segn se va necesitando. As, primero (tema 2,3) veremos los conceptos bsicos de HTML, escribir texto, darle formato, hiperenlaces, estilos, etc. Luego (tema 5) explicaremos brevemente el editor KompoZer, luego veremos como estructurar una pgina web y un sitio web (tema 6), ms adelante introduciremos el programa Gimp para trabajar con grficos (tema 9), unas ideas para crear grficos vectoriales, como por ejemplo un logotipo para la pgina, con el programa Inkscape. En el siguiente tema (tema 10) introduciremos conceptos sobre JavaScript, y luego un poco de PHP (tema 11). En los temas finales, teorizaremos un poco sobre cmo publicar nuestro sitio y como conseguir que aparezca en los buscadores y tenga visitas.
1.3. Metodologa
Como hemos dicho los diversos conceptos los introduciremos segn sean necesarios a medida que vamos desarrollando un sitio web. Primero crearemos una pgina sencilla para introducir los elementos bsicos de HTML, luego iremos aadiendo elementos a esa pgina, como un men, grficos, formularios, etc. En algunos temas, sobre todo al principio, la explicacin ser un poco ms teora y general. Muchas veces, encontrars la opcin de probar el cdigo que se est explicando. Te animamos a que hagas cambios sobre esos ejemplos y los vuelvas a probar, para ver qu sucede. En otros temas, nos centraremos ms en trabajar sobre el sitio de ejemplo, realizando cambios concretos. Por eso, te sugerimos que vayas creando el mismo sitio, asegurndote de haber aplicado los cambios explicados en cada tema.
Los temas estn explicados tambin en videotutoriales, a los que puedes acceder al principio de cada uno. Aunque en ellos no explicamos cosas nuevas, puede que te ayuden a entender algunos conceptos al verlos de forma ms visual. Al final de cada tema encontrars unos ejercicios propuestos. Con ellos, irs creando otro sitio con lo visto en cada tema.
Donde http:// es el protocolo y www. indica el sistema de pginas web. Habrs observado que no hace falta escribir esto en el navegador. Pero es porque el navegador se encarga de aadirlo, no porque nos ea necesario. nombredominio.com es el nombre del sitio. Al ir directamente ah, vamos a su pgina de inicio. La ltima parte indica el archivo del sitio que estamos viendo. En este caso, una pgina llamada paginaweb.htm que est en una carpeta llamada directorio.
Podemos visitar una direccin desde un buscador o desde un enlace en otra pgina. Podemos teclear la direccin en la barra de direcciones del navegador o acceder desde nuestros favoritos. Internet esta formada por un conjunto de servidores conectados. Un servidor es un ordenador conectado a la red de acceso a Intenet que dispone de un programa que es capaz de recibir una URL y devolver una pgina web al que hizo la peticin. Podramos decir que Internet est formado por una gran cantidad de ordenadores que pueden intercambiar informacin entre ellos. Es una gran red mundial de ordenadores. Los ordenadores se pueden comunicar porque estn unidos a travs de conexiones y gracias a que utilizan un lenguaje o protocolo comn, el TCP/IP.
Segn el esquema que podemos ver en la imagen, un usuario se conecta a la red (a travs de un mdem o un router, ya sea va lnea telefnica, cable, satlite, etc...). A partir de este momento el protocolo TCP/IP entra en juego, gracias a l puedes comunicarte con tu Proveedor de servicios de Internet (ISP) dndole a conocer tu direccin fsica.
Utilizando TCP/IP, el ISP asigna una direccin IP a tu PC y en ese momento se te da acceso a la red. Cuando queremos acceder a una pgina proporcionamos un dominio que es traducido en los Servidores DNS y localizado. Cuando sabemos en qu Servidor Web se encuentra la pgina que queremos visitar se procede a su descarga y visualizacin en el navegador del PC.
Vamos a comenzar por escribir una pgina web muy sencilla. Para ello utilizaremos un editor de texto sin formato, como puede ser el Bloc de notas (Notepad) includo en Windows. Puedes encontrarlo en Todos los programas Accesorios. El aspecto del Bloc de notas es muy simple, una hoja en blanco con una barra de mens.
Si no ests familiarizado con las forma de escribir en un ordenador, consulta este bsico . Escribiremos el siguiente cdigo. Ms adelante ya veremos qu es cada elemento: <html> <head> <title>Mi primera pgina</title> </head> <body> <p>Hola mundo</p> </body> </html>
Una vez escrito, vamos a guardarlo. Pero antes de continuar, debemos de explicar que lo es la extensin de un archivo. La extensin indica de qu tipo es un archivo. La extensin son las tres letras que van despus del punto al final del nombre de un archivo (por ejemplo, imagen.gif o documento.doc). Puedes abrir cualquier carpeta para comprobarlo. Si no puedes ver las extensiones, es porque Windows las oculta. Si es tu caso, puedes hacer que las muestre a travs del men Organizar Opciones de carpeta y bsquedas, pestaa Ver, desmarcando la opcin Ocultar extensiones de archivo para tipos de archivos conocidos, en Windows Vista. En Windows XP encontramos esta opcin en el men Herramientas Opciones de carpeta, tambin en la pestaa Ver. Vamos a continuar guardando la pgina. Pulsamos en el men Archivo y elegimos Guardar. Introducimos el nombre, por ejemplo Primera. Si ahora pulssemos Guardar, se guardara con la extensin txt, que indica que es un documento de texto sin formato. Para guardarlo como una pgina web, debemos de emplear la extensin .htm (o .html). Por lo que completamos el nombre para que quede Primera.htm y pulsamos Guardar.
Nota: Es conveniente que guardes los archivos creados durante el curso en la misma carpeta. Ahora, utilizando el Explorador de Windows, abrimos la carpeta en la que hemos guardado el archivo y hacemos doble clic sobre el. Como el archivo tiene extensin .htm, se abrir la pgina con el navegador que tengamos como predeterminado. Por ejemplo, en Internet Explorer 7, el resultado se ve as:
Observa que no se muestra todo lo que hemos escrito. Si te fijas en el documento del Bloc de notas, vers que todo lo que aparece entre los signos < y > no se muestra. Esos signos delimitan una etiqueta de HTML, y todas las que hemos utilizado siguen el formato <etiqueta>contenido</etiqueta>. Por ejemplo, la etiqueta <title> contiene el texto que se mostrar como ttulo de la pgina, y la etiqueta <p> indica un prrafo con texto normal. Por lo tanto, un navegador web es una aplicacin capaz de interpretar el cdigo HTML, formado por etiquetas y mostralo debidamente formateado. En cualquier momento, podemos ver el cdigo HTML de la pgina que estamos viendo. En Internet Explorer, podemos hacerlo desde el men Ver Cdigo fuente, y se mostrar utilizando el Bloc de notas. En Mozilla Firefox lo hacemos tambin desde el men Ver, eligiendo la opcin Mostrar el cdigo
fuente de la pgina (teclas Ctrl + U), y muestra el cdigo fuente formateado con colores. Puedes probarlo viendo el cdigo fuente de esta pgina. Si necesitas ms ayuda con el Bloc de notas, puedes verla en este bsico .
2.1. Etiquetas
El lenguaje HTML se basa en etiquetas, por eso es importante entender bien la sintaxis de las etiquetas. Al realizar nuestro primer ejemplo, hemos visto algunas etiquetas. Las etiquetas siempre van contenidas entre los signos de desigualdad < y >. Por ejemplo <body>,<title> o <p>. Las etiquetas tienen una etiqueta de apertura y una de cierre, marcada por el signo /. Por ejemplo <body> (apertura) y </body> (cierre). Entre la apertura y el cierre, est el contenido de la etiqueta, que puede ser texto u otras etiquetas, depende del tipo de etiqueta. Algunas etiquetas, no tienen contenido, y se cierran sobre s mismas. Esto se expresa colocando la apertura y el cierre en la misma etiqueta, como por ejemplo: <br />, que equivaldra a <br></br>. La etiqueta <br /> escribe un salto de lnea. Vamos a fijarnos en la apertura de la etiqueta. La primera palabra que aparece es el nombre o identificador de la etiqueta. A parte, podemos encontrar atributos con sus valores, siguiendo el formato <etiqueta atributo1="valor" atributo2="valor">. La forma correcta de escribirlo es escribir el nombre de la etiqueta y los atributos en minscula, y los valores contenidos entre comillas dobles. Si un atributo tiene ms de un valor, se escriben todos los valores dentro de las mismas comillas, separados por espacios en blanco, por ejemplo <etiqueta atributo="valor1 valor2">. Hasta hace poco, lo ms usual a la hora de escribir pginas web era que cada etiqueta tuviera bastantes atributos, que se referan a propiedades del formato o representacin de los elementos. La tendencia actual es la de separar el formato del contenido, descartando estos atributos, sustituyndolos por propiedades de estilo. Por ejemplo, para escribir la siguiente lnea:
Bienvenidos a www.aulaclic.es
Antes, sin estilos: <p align="center"><font color="#993366" size="4" face="Comic Sans MS, Arial, MS Sans Serif">Bienvenidos a www.aulaclic.es</font></p> Ahora, con estilos: <p class="presentacion">Bienvenidos a www.aulaclic.es </p>
Como veremos en el siguiente tema, en otro lugar se definen las caracteristicas del estilo.
La etiqueta <head> contiene informacin sobre la pgina. Por ejemplo contiene etiquetas que pueden decir de qu va la pgina, el ttulo que debe de mostrar en la barra del navegador, o cdigo javascript y estilos, que pueden estar en el propio encabezado o como llamadas a otros archivos. Normalmente, lo que contiene esta etiqueta no se muestra en el navegador. Iremos viendo lo que puede contener esta etiqueta a medida que nos haga falta. De momento slo comentaremos que obligatoriamente debe de contener la etiqueta <title></title>, que contiene el ttulo de la pgina, que es lo que se ve en la barra de ttulo del navegador.
En el <body> encontramos el contenido de la pgina, lo que se ve a travs del navegador: texto, imgenes, enlaces, tablas, etc... En el siguiente ejemplo, puedes ver que hemos modificado el cdigo que utilizamos en la pgina Primera.htm creada en el tema anterior. En l vemos los elementos que hemos comentado. Hemos aadido la etiqueta <br /> para saltar de lnea. Esta es la primera pgina del sitio que vamos a ir construyendo a lo largo del curso.
<html> <head> <title>Floramics. Amigos de </head> <body> <p>Bienvenido a <br /> En esta web encontrars asociacin y nuestra coleccin flores.</p> </body> </html>
las
flores</title>
Puedes copiarlo y pegarlo en la siguiente caja de texto y pulsar en Visualizar el cdigo escrito esto har que se abra una ventana o una pestaa en tu navegador en la que podrs ver cmo queda la pgina. Es equivalente a lo que hicimos en el tema anterior con el bloc de notas pero de una forma ms cmoda para ti. Observa como los espacios en blanco no son tenidos en cuenta, un poco ms adelante volveremos sobre este tema. Luego puedes aadir un salto de lnea y un nuevo texto "Tenemos las fotografas organizadas en diferentes categoras" y volverlo a visualizar.
Pg. 2.2
Una de las peculiaridades del texto, es que los espacios en blanco consecutivos y saltos de lnea no se muestran como en el cdigo fuente. Si hay varios espacios seguidos, slo se mostrar uno. Por ejemplo, si en el cdigo fuente escribimos Bienvenido a Floramics se ver Bienvenido a Floramics. Si queremos poner varios espacios seguidos, utilizaremos el cdigo html para el espacio, . El navegador tambin ignora los saltos de lnea. As si dentro de un prrafo colocamos varios saltos de lnea pulsando Intro, estos no se vern. Como ya vimos para crear un salto de lnea dentro de un prrafo, utilizamos la etiqueta <br />. Puedes ver todo esto en el siguiente ejemplo: <html> <head> <title>Floramics. Amigos de </head> <body> <h1>Bienvenido a <h2>Presentacin</h2> <p> En esta web encontrars asociacin y nuestra coleccin flores.<br Tenemos las fotografas organizadas en <h2>Contacto</h2> <p> Si quieres visita nuestra pgina de </body> </html>
las
flores</title> Floramics</h1>
la de /> categoras</p>
Es interesante utilizar encabezados, ya que muchos programas podrn generar tablas de contenido a partir de cmo hayamos estructurado nuestra pgina. A la hora de escribir texto, hay ms cosas que hemos de tener en cuenta relativas al idioma y a los caracteres especiales, como las letras acentuadas y la . Puedes verlas en este tema avanzado .
Puedes realizar este ejercicio paso a paso para crear una pgina sencilla.
Cuando queremos introducir una imagen, lo hacemos con la etiqueta <img />. Los atributos que como mnimo ha de tener esta etiqueta son los siguientes: <img src="ubicacion/imagen.gif" alt="texto alternativo" /> Lo primero que debemos de saber es dnde est la imagen, su ubicacin, que es lo que debe contener el atributo src: Si la imagen est en una pgina Web, basta con saber su ruta, por ejemplo http://www.aulaclic.es/logo_ac1.jpg. Esto es lo que se llama una direccin absoluta.
Si la imagen est en el mismo sito que la pgina web, podemos utilizar una direccin relativa, como imagen.gif o imagenes/imagen.gif. Si no sabes cmo indicar una direccin relativa, consulta este bsico .
Cuando el navegador no encuentre la imagen ubicada en scr no podr mostrar la imagen. En su lugar puede mostrar una imagen de error, como en Internet Explorer que muestra .
Adems se mostrar el texto contenido en el atributo alt, ya que sa es su funcin: mostrar un texto alternativo cuando no se puede mostrar la imagen. Esto es importante para la accesibilidad a la web. Imaginemos que tenemos unas imgenes que hacen de botn para ir a partes de nuestra web, como Inicio o Galera. Si no ponemos el alt, y no se muestran las imgenes, el usuario no podr navegar por nuestro sitio.
Aunque no son obligatorios, es muy frecuente aadir a la imagen los atributos height (alto) y width (ancho), introduciendo en ellos las dimensiones de la imagen, en pxeles. Al cargar una pgina, el navegador muestra primero el texto y despus las imgenes. Si conoce las dimensiones de cada imagen, puede dejar un hueco reservado para ellas. Si no, pondr el texto y luego ir desplazndolo para colocar las imgenes, lo que har incmodo leer la pgina hasta que no est totalmente cargada. Otro atributo frecuente en las imgenes es title. Si lo ponemos en la imagen, al posar el cursor sobre ella se mostrar su valor. En IE7, cuando se omite title, se muestra el contenido de alt. Por ejemplo, para el siguiente cdigo se muestra la siguiente imagen: <img src="comunes/aulaclic.gif" alt="aulaClic" width="91" height="41" title="El logo de aulaClic" />
Los valores de height y width puedes verlos al seleccionar la imagen desde el Explorador de Windows o desde un programa de grficos. Si cambias esos valores la imagen tambin cambiar. Si reduces los valores, manteniendo la proporcin, la imagen se ver ms pequea, si los aumentas se ver ms grande, pero con peor calidad, como puedes ver en el siguiente ejemplo: <img src="comunes/aulaclic.gif" alt="aulaClic" width="126" height="56" title="El logo de aulaClic" />
Para aumentar o disminuir una imagen es conveniente utilizar un programa grfico, ya que estos programas tienen opciones para optimizar el tamao de las imgenes. En el tema 9 veremos cmo hacerlo con el programa grfico Gimp. Vamos a aadir la siguiente imagen a nuestra pgina de Floramics. La imagen se encuentra en graficos/flor_ejemplo2.jpg Hemos reducido su tamao variando los atributos, lo cual no es una buena tcnica ya que, aunque se ve bien, se tiene que cargar una imagen grande para luego verla ms pequea.
Este es el cdigo: <html> <head> <title>Floramics. Amigos de las flores</title> </head> <body> <h1>Bienvenido a Floramics</h1> <h2>Presentacin</h2> <p> En esta web encontrars informacin sobre la asociacin y nuestra coleccin de fotografas de flores.<br /> Tenemos las fotografas organizadas en diferentes categoras.</p> <img src="graficos/flor_ejemplo2.jpg" width="150" height="150" alt="No se encuentra esta imagen" /> <h2>Contacto</h2> <p> Si quieres comunicarte con nosotros visita nuestra pgina de contacto. Te esperamos.</p> </body> </html>
Por ltimo, a la hora de elegir una imagen, hemos de tener en cuenta que para poder mostrarla, el navegador debe de descargarla primero. Y es fcil que una sola imagen ocupe ms tamao que el resto de elementos de la pgina. Por eso hemos de intentar optimizar al mximo las imgenes, e intentar que "pesen" lo menos posible, es decir que su tamao en Kb. sea bajo. El sentido comn nos dice que cuanto ms grande sea la imagen, ms ocupa, por lo tanto, hay que procurar usar imgenes lo ms pequeas posibles, siempre que lo que queramos mostrar se vea con suficiente nitidez.
Pero dos imgenes del mismo tamao pueden tener pesos diferentes, ya que una de ellas puede tener ms resolucin de la que es necesaria para que se vea bien. Es decir que aparte del tamao influye la resolucin, para optimizar la resolucin de las imgenes conviene utilizar un programa grfico, ya que estos programas tienen opciones para ello. En el tema 10 veremos cmo hacerlo con el programa grfico GIMP. Con Photoshop se hace como se muestra en este enlace del curso de aulaClic. Y con Illustrator como se muestra aqu.
http://www.aulaclic.es/paginasweb/ejercicios/citas_celebres.htm, o una direccion relativa, como ejercicios/citas_celebres.htm, de la misma forma que vimos para las imgenes. Es muy comn aadir a los enlaces el atributo title, para que muestre informacin sobre el destino del enlace cuando el usuario deje unos instantes el cursor encima del enlace. Por ejemplo:
Pulsa aqu. Pulsa <a href="http://www.aulaclic.es" title="Visita la web de aulaClic">aquí</a>. Por defecto, el enlace se abrir en la misma ventana. Si queremos que se abra en una nueva ventana, podemos utilizar el atributo target="_blank". Aunque, el W3C, el organismo que regula los estndares del HTML desaconseja su uso, con la idea de que se debe permitir al usuario decidir si quiere abrir el enlace en la misma u otra ventana pulsando con el botn derecho del ratn sobre el enlace, el atributo target se sigue utilizando porque la mayora de los usuarios pulsan directamente sobre el enlace, sin usar el botn derecho. As pues si en nuestra pgina queremos informar sobre la existencia de otra pgina del mismo tema, colocaremos un enlace a ella y le pondremos el atributo target="_blank" para evitar que el usuario se vaya a esa pgina y no se acuerde de volver a la nuestra. Normalmente utilizaremos enlaces para navegar por nuestro sitio. Hemos de evitar enviar al usuario a pginas en las cuales no sepa como volver a la pgina anterior o como ir a la pgina principal. Siempre es mejor aadir un enlace volver, que confiar en que el usuario utilice el botn Atrs del navegador. Ms adelante, veremos como disear un buen sistema de navegacin para nuestro sitio web. Aqu puedes ver un ejemplo con enlaces e imgenes: <html> <head> <title>Floramics. Amigos de las flores</title> </head> <body> <h1>Bienvenido a Floramics</h1> <h2>Presentacin</h2> <p> En esta web encontrars informacin sobre la asociacin y nuestra coleccin de fotografas de flores.<br /> Tenemos un ndice alfabtico con todas las fotografas, o puedes verlas organizadas en diferentes categoras.</p> <img src="graficos/flor_ejemplo2.jpg" width="150" height="150" alt="No se encuentra esta imagen" /> <p>Interesante enlace sobre flores: <a href="http://www.mundoflores.net">Mundoflores</a>< h2>Contacto</h2> <p> Si quieres comunicarte con nosotros visita nuestra pgina de contacto. Te esperamos.</p> </body> </html>
Un enlace tambin puede llevarnos a una parte concreta dentro de una pgina. Por ejemplo, si la pgina es muy larga podemos poner un enlace que nos lleve al principio de la pgina. En este tema avanzado puedes ver cmo hacer esto y algunas cosas ms.
Hasta ahora hemos aprendido a utilizar los elementos bsicos de HTML para escribir texto, imgenes y enlaces, pero los resultados han sido muy pobres desde el punto de vista esttico. A continuacin vamos a ver como poner "guapa" nuestra pgina formateando el texto, con bordes, mrgenes y fondos. Veremos un concepto muy importante y potente: el estilo CSS. El aspecto de la pgina se controla con los estilos CSS. Por ejemplo, aadiendo estilos CSS a la pgina de nuestro ejemplo obtenemos este resultado.
Los estilos que hemos aadidos son los que puedes ver en esta imagen y que vamos a comentar a continuacin:
alienacin del texto ser justificada y el color de fondo de la pgina ser el #3d2e2a. A continuacin vamos a definir el estilo de la etiqueta H1, de la siguiente forma: h1{ margin-top: font-size: color: #d38451;} Que quiere decir que todas las cabeceras H1 tendrn un margen izquierdo de 80 pixels (si no se pone la unidad, se toman pixels), un margen superior de 20 pixels, un tamao de letra margin-left: 80px; 20px; 180%;
de 180% y el color #d38451 , como puedes comprobar en la imagen del principio de este punto, la cabecera "Bienvenido a Floramics" queda as:
Es decir, el color y tamao de este estilo han prevalecido sobre los ya definidos en la etiqueta Body. Siguiendo con nuestro ejemplo, a continuacin definimos un mismo estilo para las cabeceras H2 y H3, pero como queremos que la cabecera H3 tenga un color diferente, volvemos a definir otro estilo a continuacin para H3 con el valor del color deseado. Es decir, el valor vlido es el ltimo valor definido, por esto los estilos se llaman CSS (Cascade Style Sheet. Hojas de estilo en cascada). Ms adelante hablaremos ms sobre el orden de aplicacin de los estilos. A continuacin definimos el estilo de los prrafos (etiqueta p) con un line-height (interlineado) de 1.5em (en este tema bsico sobre unidades de medida quiere decir em) , una identacin de 15 pixels y un margen de 35 pixels. Con lo definido hasta ahora el texto que escribamos en los prrafos tomar las propiedades definidas en los estilos de la etiqueta Body y de la etiqueta p, pero Cmo podemos cambiar el color de una palabra concreta dentro de un prrafo? Para hacer esto tenemos que definir un nuevo tipo de estilo: las clases. Definir un estilo de clase es muy sencillo, basta escribir un punto y un nombre elegido por nosotros, por ejemplo: .azul color: #6C6CCA;} As hemos definido un estilo para la clase azul con tipo de fuente negrita y color #6C6CCA. Una vez definida la clase, para aplicrsela a una palabra basta utilizar la etiqueta span enmarcando la palabra. Por ejempo, para asignarle la clase azul a la palabra informacin (que esta dentro de un prrafo), escribiriamos: <p>En esta web sobre asociacin y flores.</p> encontrars nuestra <span class="azul">informacin de </span> la fotografas de { font-weight: bold; puedes ver qu
coleccin
Puedes observar que la clase azul ha "aadido" las propiedades color azul y negrita a la palabra informacin, manteniendo las otras propiedades que ya tena por pertenecer a un prrafo. Es decir, los estilos van sumando propiedades sin eliminar las que ya se tienen. Independencia entre el contenido y el formato. Con los estilos CSS conseguimos dar formato a las pginas web de una forma que no exista hasta que aparecieron ellos: separando el formato del contenido. Por un lado tenemos la definicin de estilos y por otro lado el propio texto de la pgina. Este concepto es muy importante porque hace que el trabajo de creacin y mantenimiento de una pgina web sea ms sencillo. Hasta que aparecieron los estilos CSS el formato y el texto estaban mezclados. Ahora se pueden separar y los estilos CSS nos proporcionan las herramientas para hacerlo, aunque tambin es posible mezclarlo todo. En este curso procuraremos hacerlo bien. Siguiendo esta forma de hacer las cosas obtendremos pginas web en las que cambiar su aspecto sea algo sencillo, simplemente habr que modificar un estilo en un solo lugar. An es posible aplicar formato sin separarlo del contenido, si quieres ver lo que no hay que hacer, mira este tema bsico.
El color se expresa con la propiedad color. El valor que puede tomar esta propiedad se puede expresar de varias formas: a. Un nmero hexadecimal. Por ejemplo color: #0000FF;,o color: 0x800080;. b. Tres nmeros entre 0 y 255. Por ejemplo color: rgb(0, 0, 255);. c. Tres nmeros entre 0 y 100. Por ejemplo color: rgb(10%, 20%, 75%);.
d. Un nombre. Algunos colores se pueden expresar con su nombre en ingls. Por ejemplo color: green; o color: DarkGreen;. Como todo esto es un poco lioso, hay herramientas que facilitan el trabajo con los colores, por ejemplo, ColorPic es un pequeo programa gratuito que puedes descargarte en esta direccin: http://www.iconico.com/colorpic/. Los mejores editores grficos tambin incorporan herramientas en este sentido, ms adelante veremos como trabajar con colores con el editor Kompozer. Si todava no lo has hecho, es conveniente que veas este tema bsico sobre colores Puedes encontrar ms informacin sobre los colores en el Curso de Illustrator. En el tema 8 volveremos a hablar sobre colores, ampliando algunas cuestiones relativas a la eleccin de los colores ms apropiados. Fuente Podemos elegir la fuente (o tipo de letra) a travs del atributo font-family. Podemos indicar cualquier fuente que queramos, teniendo en cuenta que si incluye espacios, debe de ir entre comillas dobles. Por ejemplo font-family: arial; o font-family: "Times New Roman";. Pero hemos de tener en cuenta que puede que quien vea la pgina no tenga instalada la fuente que queramos. Para evitar esto, existen cinco fuentes genricas que s se mostrarn en cualquier equipo: serif, sans-serif,cursive,fantasy, monospace. Esto no quiere decir que slo debamos de utilizar estas cinco. El valor de font-family pueden ser varias fuentes, separadas por comas. El navegador elegir, comenzando por la derecha, la primera disponible, por lo que es conveniente terminar por una genrica. .
Por ejemplo, font-family:Georgia, "Times New Roman", Times, serif;. Igual que ocurra con el color, los editores grficos ofrecen la posibilidad de elegir diferentes fuentes y previsualizar su forma, ms adelante veremos como hacerlo con Kompozer.
Tamao El tamao se regula a travs de la propiedad font-size. Podemos utilizar cualquiera de las unidades de tamao, pero lo ms frecuente es utilizar px (pixels), o porcentajes % o em, estas dos ltimas son tamaos relativos al tamao de la fuente del elemento que est por encima. 100% o 1em, sera el mismo tamao, mientras que 200% o 2em sera el doble y 50% o 0.5em sera la mitad. Si utilizamos valores relativos, facilitamos que se pueda cambiar de tamao todo el texto de la pgina de forma ms coherente. As los discapacitados visuales podrn utilizar el comando para cambiar el tamao de texto que tienen los navegadores. http://usalo.es/152/botonespara-cambiar-el-tamano-de-letra/ Inclinacin Podemos poner una fuente en cursiva utilizando la propiedad font-style. Puede tomar uno de los siguientes valores: normal. Coloca el estilo de forma normal, sin inclinacin. oblique. Inclina el texto. italic. Adems de inclinarlo, susituye la fuente por su versin en itlica si est disponible. Aunque la mayora de los navegadores no lo hacen. Grosor Podemos aumentar el grosor de la fuente, lo que equivaldra a ponerla en negrita, utilizando font-weight. Puede tomar los siguientes valores: normal. El texto no se muestra en negrita. bold. El texto se muestra en negrita. Nota. En teora se pueden expresar distintas intensidades de negrita, pero los navegadores no las muestran. Decoracin Con la propiedad text-decoration podemos hacer que el texto muestre, por ejemplo, los distintos tipos de subrayado, con los siguientes valores: none, el texto se muestra sin ningn tipo de decoracin. underline, el texto aparece subrayado. overline, el texto aparece sobrerrayado.
line-through, el texto aparece tachado. blink, el texto parpadea. (No funciona en Internet Explorer, en Firefox 3, si).
Safari Opera Google Chrome Veamos un ejemplo con lo que hemos visto: <html> <head> <title>Estilo del Texto</title> <meta http-equiv="content-type" content="text/html; charset=iso8859-1" /> </head> <body> <h1 style="font-size:100%">Éste es un h1 del mismo tamaño que un párrafo normal.</h1> <p>Éste es un párrafo normal.</p> <p style="color:red">Éste párrafo es de color rojo, con algunas palabras en <span style="color:blue">azul</span>.</p> <p>Podemos cambiar la fuente: <span style="font-family:serif;">y poner este texto en serif</span>, <span style="font-family:sans-serif;">esta parte en sansserif</span>, <span style="font-family:cursive;"> la familia de esta palabra es cursive</span>, <span style="fontfamily:fantasy;">también tenemos fantasy</span>, <span style="font-family:monospace;">y acabamos con monospace</span>. </p> <p style="font-weight:bold; text-decoration:underline">Este párrafo (<span style="font-weight: normal; text-decoration: none;">menos esta parte</span>) está en negrita y subrayado. <span style="textdecoration:overline">Este fragmento, además sobrerrayado</span>.</p> <p style="text-transform:lowercase;"><span style="fontsize:85%;">ÉSTE,</span> ESTÁ <span style="font-size:110%;">ESCRITO TODO </span><span style="font-size:120%;">EN MAYÚSCULAS</span>, <span style="font-size:130%;">Y ADEMÁS VA</span><span style="font-size:140%;"> CRECIENDO.</span></p> </body> </html>
Lo normal es dar a la etiqueta body los atributos generales del documento, como el tamao o el tipo de fuente.
outset
Por lo tanto, podramos definir el borde de un elemento de la siguiente manera: <p style="border-color:#009933; border-width: 3px; border-
style:double;">bordes</p> bordes En este caso, podemos resumirlo con el atributo border, siguiendo el formato border: color grosor estilo;, lo que quedara border:#009933 3px double;. Cada elemento tiene cuatro bordes, que podramos definir de forma independiente, como border-top, border-right, border-bottom y border-left. A su vez, para cada uno de ellos podemos definir su color, grosor y estilo de forma independiente, por ejemplo border-bottom-color o border-top-width. Si no sabes como referirte a los distintos lados de un elemento, visita este bsico .
3.4. Mrgenes
Los elementos html tienen dos mrgenes. El margen externo y el margin interno. Ambos se refieren a la la distancia hacia uno u otro lado con respecto al borde del elemento, a su lmite, independientemente de que el borde sea visible o no.
El margen externo se regula con la propiedad margin. El margen exterior es la distancia mnima que habr entre el borde exterior del elemento y el elemento siguiente, por cada uno de sus cuatros lados. margin: 0 margin: 0 margin:5px margin:5px 35px margin:15px margin: 0 margin-left:-20px Los margenes no se suman, se solapan, prevaleciendo el mayor. As, si un prrafo tiene un margen inferior de 50px y el de abajo un margen superior de 30px, entre ellos quedar un margen de 50px, por ser el mayor, pero no de 70px. Otro valor que podemos dar al margen es auto. Este valor da a ambos mrgenes el mismo valor, y nos permite, por ejemplo, horizontalmente un elemento con una anchura determinada. El margen est fuera del elemento. Observa, por ejemplo que no mantiene el color de fondo del elemento. El margen interno se regula con la propiedad padding. Se refiere a la distancia que hay ente el borde del elemento y su contenido, por ejemplo el texto. padding: 0 padding: 0 padding:5px padding:5px 35px padding:15px padding: 0 padding-bottom:20px El padding si que forma parte del elemento, por eso muestra el mismo fondo. Por defecto, la mayora de elementos incluyen un margen exterior, y algunos un margen interior, que debemos de tener en cuenta. Veamos un ejemplo con lo que hemos visto. Ve cambiando los valores: <html> <head> <title>Bordes y <meta http-equiv="content-type" 8859-1" />
</head> <body style="background-color:whitesmoke; font-family: sans-serif;"> <h1 style="font-size: 120%; background-color: #99CCFF; color: #FFFFFF; border-color: #6666FF; border-style: solid; border-width: 0 0 2px 5px; padding-left: 20px;">Bordes y márgenes</h1> <p style="background-color:#99CCFF; margin: 0;">Éste es un párrafo sin margen.</p> <p style="background-color:#99CCFF; margin: 0;">Éste es otro párrafo sin margen.</p> <p style="background-color:#99CCFF; margin: 20px;">Éste es un párrafo con margin:20px.</p> <p style="background-color:#99CCFF; margin: 20px;">Éste es un párrafo con margin:20px.</p> <p style="background-color:#99CCFF; margin: 20px; padding: 10px">Éste es un párrafo con margin:20px y padding:10px.</p> <p style="background-color:#99CCFF; margin: 20px; padding: 10px; border: cyan 4px inset">Éste es un párrafo con margin:20px, padding:10px y border: cyan 4px inset</p> <p style="background-color:#99CCFF; margin-right:25%;">Éste es un párrafo con margin-right:25%.<br /> Cambia al cambiar la ventana.</p> </body> </html>
url(graficos/fondo.png);. En url() introducimos la direccin de la imagen que queremos utilizar. Si utilizamos una imagen podemos configurar otras propiedades:
background-repeat, determina si el fondo se repite. Puede tomar los valores norepeat si no queremos que se repita, repeat-x para que se repita en horizontal, repeat-y para que lo haga en vertical o repeat para que llene todo el fondo, que es el valor que toma si no le indicamos otra cosa. Si no se repite la imagen de fondo, podemos posicionarla con background-position. Podemos darle los valores de los cuatros lados (top, right, bottom y left), combinarlos para colocarla en las esquinas, por ejemplo top left, o centrarla con el valor center. Tambin podemos introducir medidas, donde el primer valor se refiere a la posicin horizontal y el segundo al vertical, por ejemplo background-position: 50% 50%;. <html> <head> <title>Bordes y <meta http-equiv="content-type" 8859-1" />
</head> <body style="background-image: url(graficos/fondo_ladrillos.jpg); background-color: #C9B2AC; background-repeat: repeat-y; background-position: center"> <h1 style="background-color: #CC9999; color: #FFFFFF;">Fondos</h1> <p style="background-color: #CC9999; color: #FFFFFF;">Ve cambiando los valores de background-repeat y background-position.</p> </body> </html>
Un estilo se declara con un selector y un bloque de declaracin, siguiendo el formato selector {bloque de declaracin;}. El selector identifica al elemento al que se le aplica el estilo. Puede hacerlo de las siguientes maneras: Si queremos formatear todas las apariciones de una etiqueta, utilizamos la etiqueta como selector. Por ejemplo, body o p. Para formatear determinados elementos, podemos definir clases. Para definir una clase, utilizamos el signo . seguido del nombre (descriptivo) que queramos dar a la clase. Por ejemplo .resaltado. De esta forma, creamos una clase genrica, y el estilo afectar a todos los elementos, sean del tipo que sean, que tengan esa clase. Tambin podemos especificar cmo se comporta la clase para cada elemento, con el formato etiqueta.clase. Por ejemplo p.resaltado. Por ltimo, para aplicar la clase a los elementos, no hay ms aadirles el atributo class con el nombre de la clase deseada. Por ejemplo <p class="resaltado">. Para darle estilo a un elemento en concreto, podemos utilizar su atributo id. En el selector, precedemos el id por el signo #. Por ejemplo, #logo. De forma opcional, podemos preceder el identificador con el tipo de elemento de que se trata. Esto puede ser til para ayudarnos a recordar de qu elemento se trata. Tambin podemos anidar selectores, separndolos por espacios. En este caso, el estilo slo afectar a los elementos contenidos en el selector que haya ms a la izquierda. Por ejemplo, el selector p.resaltado span slo afectara a las etiquetas span que estn dentro de algn prrafo (p) que tenga la clase resaltado (class="resaltado"). Al definir estilos, podemos utilizar varios selectores a la vez, si los separamos por comas. Por ejemplo, utilizando el selector p, h2, h1 podemos definir a la vez el estilo de las etiquetas p, h1 y h2. El bloque de declaracin, es la relacin de cada propiedad del estilo con el valor que toma. Es decir, contendr lo que colocaramos en la etiqueta style del propio elemento. El bloque de declaracin lo colocaremos detrs del selector, encerrado entre llaves { }. Lo normal es formatearlo para que nos sea fcil de leer. Para ello podemos utilizar saltos de lnea, espacios o tabulaciones, ya que son ignorados. Una forma comn de formatear el estilo, es como vemos en el siguiente ejemplo: p { color: blue; background-color: font-style: } #F7F0E2; oblique;
pgina. Y si en un prrafo de la pgina, en el atributo style indicamos el color de texto verde, prevalecer ste por ser el ms concreto de todos. Lo mismo ocurre con los selectores. Por ejemplo, p.inicio es ms concreto que p, ya que se refiere slo a los prrafos con esa clase. Y p#titulo sera an ms concreto, ya que se refiere directamente a un determinado prrafo. Lo mismo ocurre al anidar los selectores, p.inicio span es ms concreto que poner slo span. En caso de empate, por ejemplo si definimos varias veces la misma propiedad en una hoja de estilo, se tomar en cuenta la ltima, que machacar a las anteriores. Por ejemplo, poner p {margin: 20px; margin-bottom: 5px;} sera como poner p {margin: 20px 20px 5px;}. En cualquier momento podemos saltarnos el orden de prioridad de los estilos, aadiendo !important al final de una propiedad. Esto hace que tenga preferencia sobre el resto. Por ejemplo, en este ejemplo: p color: } { color: blue !important; red;
El prrafo debera de ser de color rojo, porque el valor rojo "machaca" al azul. Sin embargo, al poner !important, hace que el texto sea rojo. Hay que tener en cuenta que las propiedades se heredan de los elementos padre. Por ejemplo, si decimos que el texto del body ser de color azul, todos los elementos tendrn este color para el texto, a no ser que indiquemos otra cosa. La mejor forma de entender todo esto, es probando un ejemplo (recuerda que puedes modificarlo): <html> <head> <meta http-equiv="Content-Type" 8859-1" <title>Estilos</title> <style body font-family:sans-serif; background-color: } h1
content="text/html;
charset=iso/>
type="text/css"> { lightyellow; {
border-bottom: text-align: } p color:#660000; border: border-width: } p.derecha text-align: border-width: } #Pepe color: border-width: } .destacado color: white;
#FFCC66
5px
solid; center; {
#FF9933 0
10px 0 2px
2px
2px
Un editor Web sera cualquier aplicacin que nos permita crear, editar y guardar una pgina Web. Como ya hemos visto, una pgina no es ms que un archivo de texto, por lo que cualquier programa que nos permita editar texto, puede funcionar como un editor Web. Podemos considerar tres categoras de editores Web: Editores de texto. Nos permiten editar el cdigo fuente puro y duro, como puede ser el bloc de notas. Editores de HTML. Funcionan como los editores de texto, pero pueden tener algunas opciones ms avanzadas. Como mostrar las etiquetas de colores, o cerrarlas automticamente. Editores WYSIWYG. Por un lado, nos permiten editar el cdigo fuente como los editores de HTML. Y por otro, nos permiten trabajar en vista de diseo. Es decir, ver la pgina como se vera en un navegador mientras la editamos. La mayora de estos editores suelen tener opciones para realizar tareas adicionales de forma ms fcil, como por ejemplo, crear elementos
de un formulario, insertar mens, e incluso cdigo JavaScript tipo AJAX ( ms adelante veremos de qu se trata). Editores de este tipo pueden ser Amaya o Dreamweaver. Escribir directamente el cdigo fuente nos da un mayor control sobre la pgina, obteniendo un cdigo ms preciso y sin etiquetas innecesarias. Pero el tener que escribir cada etiqueta hace que sea mucho ms lento y que debamos conocer mejor el HTML. Utilizar editores WYSIWYG resulta ms cmodo. Ya que no hemos de preocuparnos por la mayora de las etiquetas, y escribimos el texto como lo haramos en un procesador de texto. No obstante, no siempre se generar el cdigo que queramos. Y sobre todo si utilizamos editores no especializados, como Word que permite guardar como pgina web, aunque generando un cdigo muy "sucio". Por ejemplo, crear un html con Word en el que slo ponga "Hola mundo", con letra Arial y tamao 16px, genera un archivo de 22KB y 400 lneas de cdigo. Lo habitual es realizar el grueso de la pgina en vista de diseo, sobre todo escribir el texto. Y despus, cosas ms concretas y correcciones, realizarlas sobre el cdigo fuente. Esto tambin depende de los conocimientos de cada uno. Nota: Aunque en un editor WYSIWYG podemos ver cmo quedar la pgina, siempre hemos de probarla en los navegadores ms utilizados, en este momento Internet Explorer y Mozilla Firefox. Para realizar este curso, te recomendamos que no pierdas de vista el cdigo fuente, e intentes trabajar directamente con l la mayora de las veces, sobre todo al hacer cosas nuevas. Puede que vayas un poco ms despacio al principio, pero aprenders mucho mejor el HTML, y despus no tendrs problema para utilizar cualquier editor.
Y como al elegir cualquier programa, lo primero es optar por una solucin gratuita o de pago. Para realizar nuestra pgina Web, vamos a utilizar un editor WYSIWYG. Uno de los mejores (si no el mejor) editor de este tipo es Dreamweaver, de Adobe. Es un editor muy completo, y el elegido por la mayora de desarrolladores profesionales. Pero se trata de un editor de pago, aunque es cierto que podemos probarlo gratuitamente durante 30 das. En cuanto a opciones gratuitas, podemos encontrar, entre otros, Bluefish, ms enfocado a programadores; Amaya, desarrollado por el consorcio W3C; o KompoZer. Nos hemos quedado con este ltimo por ser bastante simple e intuitivo. Podemos descargar KompoZer desde su pgina oficial. No requiere instalacin, basta con descomprimirlo en una carpeta y ejecutarlo, aunque s deberemos instalar el paquete de idiomas en espaol como se explica en el sitio. Si necesitas ayuda para instalarlo, sigue este bsico .
En la parte superior encontramos la barra de ttulo, donde se ve el ttulo de la hoja. Debajo, encontramos una barra de mens, desde la que podemos acceder a todas las opciones del programa. Las opciones ms comunes, como Guardar, Nuevo, o insertar Enlaces o Imgenes las encontramos en la llamada barra de redaccin:
Debajo de esta barra, encontramos las barras de formato, pensadas para formatear el documento.
Normalmente no utilizaremos estos formatos, ya que todo lo referente al estilo lo trabajaremos directamente sobre la hoja de estilos. Pero si encontramos dos desplegables muy interesantes. El primero, que en la imagen muestra Texto en el cuerpo, nos permite elegir el elemento que contienen el texto que escribimos, por ejemplo un encabezado o un prrafo. El segundo, que en la imagen muestra (sin clase) nos permite asignar una clase al texto. Si seleccionamos un fragmento de texto, y le asignamos una clase, encerrar el texto en una etiqueta <span> con la clase dada. En la parte central, encontramos el rea de edicin, donde podemos editar el contenido de nuestra pgina. Podemos tener varias abiertas en distintas pestaas.
La forma en que podemos ver y trabajar con la pgina, depende del modo de edicin, de las cuatros disponibles en la parte inferior: Normal. Con este modo, vemos el diseo de la pgina como se mostrara en un navegador. Aunque aparecen algunas marcas ms, como informacin de la ubicacin de algunas etiquetas especiales, como comentarios y scripts, y lneas rojas punteadas en los bordes de tablas y divisiones. El modo Etiquetas HTML funciona como el anterior, pero mostrando en cada etiqueta un cuadradito amarillo con su identificador. El modo Cdigo fuente nos permite trabajar directamente sobre el cdigo fuente de la pgina. El modo Vista preliminar, muestra la pgina como se vera en un navegador, sin ninguna marca adicional. Tambin podemos ver el resultado en nuestro navegador predeterminado pulsando la tecla
F5.
En la parte inferior, en la barra de estado, encontramos una barra que muestra la jerarqua de etiquetas que hay sobre el lugar donde est el punto de insercin.
Es decir, lo que aqu vemos son todas las etiquetas que contienen a lo que tenemos seleccionado, desde la ms inmediata a la derecha del todo, a la primera, que suele ser el <body>. Esto nos permite seleccionar cualquier etiqueta y todo su contenido slo haciendo clic sobre ella. Si hacemos clic derecho sobre una etiqueta, aparece un men con opciones muy tiles:
Eliminar etiqueta borra la etiqueta, pero no su contenido. Muy til, por ejemplo, para quitar un span. Cambiar etiqueta, sustituye una etiqueta por otra sin lateral si contenido. Por ejemplo, podemos cambiar un prrafo por un encabezado. ID muestra una lista de los ID que utilicemos en nuestros estilos, y nos permite asignrselos a un elemento. Clases, como con ID, muestra las clases disponibles y nos permite asignarlas al elemento. Adems, nos muestra la clase ya asignada a un elemento, pudiendo quitarla. Estilos en lnea. Nos permite definir el estilo del elemento, para lo que crear el atributo style. Propiedades avanzadas. Accedemos a una ventana en la que podemos ver todos los atributos del elemento y sus valores, editarlos, eliminarlos o aadir nuevos. Tambin podremos definir el estilo incrustado. Podemos mostrar u ocultar todas estas barras a travs del men Ver Mostrar / Ocultar.
En General, nos aseguraremos de que est marcada la opcin Usar estilos CSS en lugar de elementos y atributos HTML. En Config. Nuevas pginas, si no lo est, en Conjunto de caracteres, seleccionaremos Occidental (ISO-8859-1).
En Avanzado, vamos a cambiar las siguientes opciones: En la seccin Marcado, vamos a configurar el Lenguaje como XHTML1 y el DTD como Estricto. Si quieres saber qu es esto y qu es el Doctype, consulta este avanzado . Nos aseguraremos de que est marcada la opcin Dentro de un prrafo, pulsar Enter lo cierra y crea uno nuevo. En Mostrar los siguientes caracteres como entidades, seleccionaremos Los anteriores y las letras Latin-1, para que al introducir caracteres, como letras acentuadas, KompoZer los sustituya por la entidad correspondiente. Esto no quiere decir que debamos de seleccionar estas opciones para poder crear una pgina, pero son las que utilizaremos en el curso.
Con las opciones que hemos configurado, el cdigo de la pgina tendr este aspecto <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /> <title></title> </head> <body> <br /> </body> </html>
Cuando realicemos cambios en la pgina, y no los hayamos guardado, aparecer un pequeo icono en la pestaa .
Para guardar los cambios, podemos pulsar la combinacin de teclas Ctrl + S, o el botn . La primera vez que guardemos la pgina, deberemos indicar el ttulo que le queremos dar (el contenido de la etiqueta title en la cabecera), y su ubicacin.
Desde la ventana del editor, pulsamos sobre el desplegable de arriba a la izquierda, y seleccionamos Elem. enlace, ya que una hoja es eso, un archivo externo que se enlaza. La zona de la derecha cambiar como se ve en la imagen:
Si ya tenemos creada la hoja, solo tenemos que seleccionarla pulsando en Escoja archivo. Si la hoja an no existe, basta con introducir el nombre que queramos, para crear una hoja en la misma carpeta que la pgina. En ambos casos, pulsamos en Crear hoja de estilos. Si no exista an, el archivo no se crear hasta que no definamos algn estilo. Para cerrar la ventana, pulsamos Aceptar. Con esto, lo que hemos hecho realmente es incluir en la cabecera de la pgina la llamada a la hoja de estilo. Puedes comprobarlo en la vista Cdigo fuente.
Podemos definir un estilo desde el mismo Editor CSS, pero seleccionando en el men la opcin Regla. Lo primero que tendremos que elegir ser el selector que queremos utilizar. Podemos seleccionar una de las opciones, segn el tipo de selector, pero es ms cmodo escribir
directamente el selector que nos interesa, por ejemplo body; o .miclase; o div#principal p... etc, cualquier selector vlido.
Cuando lo tengamos, pulsamos en Crear regla de estilo. Nos encontraremos con una serie de pestaas:
La pestaa General nos permite editar el estilo directamente, escribiendo propiedades y valores. El resto de pestaas se refieren a categoras de propiedades, y en ellas podremos definir el estilo de forma grfica, lo que puede resultarnos ms cmodo e intuitivo. Los distintos selectores que definamos, aparecern "colgando" de la hoja de estilo, en el panel de la izquierda, para que podamos editarlos. Si queremos borrar el estilo seleccionado, debemos pulsar el icono , y para cambiar el selector pulsamos en . Para editar las
propiedades del estilo, no tenemos ms que cambiar lo que queramos en las distintas pestaas. Por ejemplo, la categora de Texto tiene el siguiente aspecto:
Podemos elegir el tipo de letra o fuente desde los desplegables, as como el color, tamao y otras caractersticas. En la parte inferior de la ventana podemos previsualizar el aspecto del texto segn los valores que hayamos elegido. Para elegir un color para el texto podemos escribir su valor en el campo Color o hacer clic en el botn de la derecha para que se abra una ventana donde podremos seleccionar el color deseado.
Nota: La versin que hemos utilizado durante este curso (0.7.10) tiene un fallo o bug, que se produce si intentamos definir estilos para varios selectores sin aceptar los cambios. Por eso, recomendamos definir el nuevo selector y su estilo, aceptar los cambios, y volver a abrir el editor CSS para crear el siguiente estilo. Puedes practicar cmo crear algunos estilos bsicos con el ejercicio paso a paso Estilos con KompoZer.
Un sitio web o website, es un conjunto de pginas web, ms o menos extenso, agrupadas bajo un dominio, como puede ser www.aulaclic.es o www.elpais.com. Lo normal, es que el sitio web parta desde una pgina inicial, o home, desde la que podemos acceder, de forma jerrquica a todo el contenido del sitio, a travs de hiperenlaces.
A su vez, podemos encontrar enlaces hacia otros sitios distintos, ya que cada sitio tiene una URL nica que nos permite acceder a l. En conjunto de los sitios publicados en Internet forman la WEB o WWW. El contenido de las pginas del sitio, puede estar escrito directamente en HTML. Esto genera un sitio esttico, que slo recibe actualizaciones de vez en cuando, ya que hay que hacerlas manualmente sobre el cdigo. En cambio, existen otros lenguajes, como PHP, ASP o JSP que generan en HTML a partir de datos, como contenidos de bases de datos, datos introducidos por el usuario, informacin global, etc. Esto origina sitios dinmicos, ya que los cambios se producen frecuentemente y son generados desde la propia pgina. Por ejemplo, una pgina que muestra la fecha del da actual sera un contenido dinmico. Otro ejemplo sera un foro.
En nuestro ejemplo vamos a crear la web de una asociacin de aficionados a las flores. Principalmente, a esta ficticia asociacin le interesa exponer sus fotografas de flores en la web, pero tambin crearemos las pginas que den a conocer la asociacin y que permitan ponerse en contacto con ella.
pagina_1.html y pagina_2.html. A no ser que se trate de pginas del mismo tipo en las que es muy importante el orden, como pginas de un manual. Es conveniente planificar cmo va a ser el sitio, y partir de las carpetas iniciales. Lgicamente, no vamos a tenerlo todo en cuenta, por lo que a medida que vaya creciendo nuestro sitio, iremos creando las carpetas que nos hagan falta. En nuestro ejemplo pensamos crear un sitio pequeo, de menos de 10 pginas. Primero crearemos el sitio en nuestro equipo, y cuando lo acabemos ya los subiremos a un servidor Web. Comenzamos por crear la carpeta raz. En este caso, la hemos llamado sitio_flores, y la hemos ubicado en la carpeta de ejercicios del curso. Qu tendremos dentro de esta carpeta? A priori, contendr las pginas, entre las que incluimos un index. Tambin tendremos una hoja de estilo, e imgenes del diseo de la pgina, como logos, imgenes para el fondo, etc. Por lo que ser mejor si agrupamos estas imgenes en una carpeta, que podemos llamar imagenes (omitimos el acento porque no conviene incluir caracteres especiales en los nombres de archivos y carpetas). Si ms adelante tenemos otros elementos, como archivos javascript, archivos para descargar, etc, ya nos preocuparemos por crear ms carpetas para ellos. Vamos a echar un vistazo a las secciones que queremos crear: Una seccin sobre las flores, con fotografas. Una pgina sobre la asociacin. Un formulario de contacto. Una pgina con noticias sobre el tema. A excepcin de la seccin de flores, las otras sern pginas simples, que podemos dejar en la carpeta raz. Pensemos en la seccin de flores. Queremos mostrar una amplia galera de fotografas. Para que el visitante pueda encontrar una flor en concreto, es importante que las clasifiquemos. Por eso crearemos in ndice alfabtico con las flores. En otra pgina, mostraremos las fotos de las flores. Como no conviene crear una pgina muy grande, con muchas fotografas, la dividiremos en las distintas categoras, que en principio sern cuatro.
En resumen, para la seccin de flores, necesitamos 5 pginas y fotografas, que estarn mejor recogidas en una carpeta, que podemos llamar fotos. No son muchos elementos, pero podemos pensar en agruparlos todos dentro de una carpeta. Esto se hace necesario cuando hay muchos archivos, pero con tan pocos puede resultar molesto, porque tendremos que tenerlo en cuenta a la hora de crear enlaces o utilizar las imgenes del diseo. De todas formas, como el fin de este curso es didctico, vamos a crear una subcarpeta para esta seccin, a la que llamaremos flores, para aprender as a manejarlas. Por lo tanto, la estructura de archivos que planteamos para nuestro sitio quedara as:
Comenzaremos por crear las carpetas, y si ya tenemos las imgenes, guardarlas en ellas. Las pginas y hoja de estilos, las iremos creando cuando nos hagan falta. KompoZer dispone de un administrador de sitios, que nos permite ver los archivos del sitio y abrirlos directamente. En este tema avanzado te explicamos cmo hacerlo .
Existe una regla que dice que un usuario no debera de necesitar ms de tres clics para llegar a la pgina que busca. Por eso lo primero que hemos de pensar es en facilitar a navegacin. El usuario debe de ser capaz de moverse de forma intuitiva por nuestro sitio sin perderse, para ello: Debe de saber dnde est. Debemos de dejarle claro en qu parte del sitio se encuentra. Para esto es muy til el ttulo de la pgina y utilizar un encabezado que identifique la seccin. Tambin debe de distinguir si sigue en nuestro sitio, o si ha pulsado un enlace que le lleve a un sitio distinto. Debe de saber dnde ha estado. Debemos de evitar que el usuario pase una y otra vez por la misma pgina para buscar algo. Por ejemplo, distinguiendo los enlaces ya visitados. Debe de saber dnde puede ir. Una pgina web se basa en enlaces, y estos deben de ser claramente identificables. Adems, no deben de ofrecer dudas de a dnde llevan, por ejemplo con nombres de pginas entendibles, que se muestran en la barra de estado, o con textos de informacin emergentes. Debe de poder seguir navegando. No le enviaremos a una pgina sin enlaces, desde la que no pueda continuar recorriendo el sitio. Piensa que puede acceder directamente a esa pgina, por ejemplo a travs de un buscador, por lo que no podra utilizar ni el botn Atrs del navegador. La forma de navegar por nuestro sitio, debe de ser constante. As, con visitar unas pocas pginas aprender a moverse por nuestro sitio, y le resultar ms cmodo. La forma ms habitual de solucionar todo esto es utilizar un men, que se mostrar en todas las pginas.
Los elementos del men deben de ser descriptivos. Por ejemplo, no es til poner una imagen, por bonita que sea, si puede que el usuario no entienda qu significa o a dnde lleva. O que para saberlo tenga que poner el cursor sobre l. El men debe de ser ligero, y no ocupar demasiado espacio, ya que se repetir en todas las pginas. En lo que se refiere al cdigo, el men suele tener estos elementos: Los mens se suelen basar en listas <ul></ul>. Dentro de cada elemento de la lista, colocaremos un enlace. Si no sabes qu son las listas, puedes verlo en este bsico . El aspecto del men se consigue por CSS. Suelen tener cdigo javascript, por ejemplo para mostrarlo, producir efectos ms o menos avanzados, o en vez de los enlaces. Por lo tanto, comenzaremos creando nuestro men como una lista, a la que ms adelante le iremos dando estilo hasta convertirla en un atractivo elemento de navegacin.
o o
Como son slo cinco elementos, vamos a ponerlo en la parte superior, ya que en un lateral desperdiciaramos espacio. Un rea para el contenido. Cambiar en cada pgina, pero tendr un ttulo para la seccin. El pie, por ejemplo para poner el copyright de la pgina. Podemos utilizar un elemento de bloque como un prrafo o un div. Tambin existe una etiqueta especfica, <address> utilizada para contener informacin sobre el autor de la pgina. Para que nos quede mejor estructurada la pgina, vamos a utilizar divisiones en las tres secciones diferenciadas:
Encabezado Ttulo y men
Contenido Pie
De esta manera, entre pginas prcticamente slo cambiaremos el contenido. Con esta estructura en mente, vamos a escribir el cdigo: Creamos una nueva pgina, con el Doctype, head, body, etc... como ya hemos visto. Dentro, creamos tres divisiones. En la primera, colocamos un <h1> con el nombre de la asociacin. Tambin una <ul>, con un elemento y un enlace para cada una de las secciones. La divisin central la dejamos en blanco, ya que ser la que iremos cambiando. En la tercera divisin, introducimos el texto del pie. Por ejemplo, Todos los derechos reservados. Y no hemos de olvidar, que en un futuro contendr un enlace a la hoja de estilos. Por lo que es conveniente que lo pongamos ya, decidiendo un nombre para la hoja, por ejemplo estilo.css. Una vez creada, guardamos la pgina como base.html.
La pgina tiene pocos elementos, y te recomendamos que intentes hacerla escribiendo directamente el cdigo fuente. De todas formas, puedes seguir este ejercicio paso a paso para realizar la pgina con KompoZer, y comprobar el cdigo generado. Una vez creada, visualiza la pgina con un navegador. Puedes pulsar F5 desde KompoZer o hacer doble clic directamente sobre el archivo.
Por ejemplo, esto es lo que hemos introducido en el contenido del index.html, vindolo en el modo de edicin de etiquetas de KompoZer:
La otra pgina que vamos a crear es nosotros.html. En ella hablaremos un poco de nuestra asociacin. Como antes, partimos del archivo base.html, que guardaremos como nosotros.html, y cambiaremos el contenido:
Una vez editado el contenido, guarda la pgina. Ahora ya puedes probar los enlaces del men, para ir de inicio a nosotros y viceversa.
El cmo presentamos la informacin es muy importante para un sitio web. Y esto lo conseguimos con un buen diseo. Pero qu es un buen diseo web? Bueno, este punto puede dar para mucho, pero vamos a intentar transmitir unas pocas ideas bsicas: Comodidad para el visitante. Le debe de resultar cmodo navegar por el sitio, y tambin debe de poder captar la informacin (texto, imgenes, flash, vdeos...). Por eso es importante un buen sistema de navegacin, y presentar el contenido de forma clara y espaciada. Comodidad para el autor. Cuanto ms fcil nos resulte realizar modificaciones, mejor. Por eso separaremos el contenido del diseo, utilizando hojas de estilo. Accesibilidad. Cuanta ms gente pueda ver nuestro sitio mejor. Pensemos en cmo accede el visitante. En el aspecto tcnico, el sitio debera de seguir los estndares, para facilitar la compatibilidad con navegadores antiguos, u otros dispositivos, como telfonos mviles. Tambin es importante un diseo que soporte las pantallas pequeas, pero que aproveche las pantallas de gran tamao, cada vez ms frecuentes. Adems, hacerlo legible y poner textos descriptivos a las imgenes puede facilitar el uso para visitantes con problemas visuales.
Usabilidad. Por otra parte, pensemos en quin es el visitante. No es lo mismo si se dirige a nios, adultos, personas mayores o a todo el mundo. En cualquier caso, nuestro sitio debe de ser fcil de usar. Transmitir. El diseo debe de transmitir lo que el usuario puede esperar de l. Por ejemplo, de un banco esperamos seriedad, por lo que un diseo informal puede ser contraproducente. Bonito y original. El diseo debe de ser agradable, combinar bien colores, organizacin de los elementos, etc. Y cuanto ms original sea, ms lo ser nuestro sitio. Simple. Cuanto ms simple sea el diseo, ms se facilitarn el resto de aspectos que hemos comentado. Estos aspectos debemos de tenerlos en cuenta, pero no podemos pretender aplicar cada uno al 100%. Por ejemplo, un diseo ms original implicar utilizar ms elementos, y que todos aparezcan correctamente ordenados, lo que lo har ms complejo. Y al final un buen diseo depende de la temtica de la pgina y de lo que queramos transmitir con ella.
6.2. Colores
La eleccin de colores apropiados es una de las cosas que ms influyen en el aspecto del sitio. Lo habitual es utilizar una gama de colores armnicos, con variaciones de tonos de un mismo color. Con ellos formaremos la paleta de colores de nuestro sitio. Utilizar la misma paleta es importante, porque si no iremos utilizando variaciones del color, y al final tendremos un sitio con muchos colores distintos. Para aquellos que no sean buenos combinando colores, siempre se pueden inspirar en el diseo de pginas web, o herramientas que nos facilitan paletas de colores. Una buena idea es utilizar un selector de color, una herramienta que nos permita tomar el color de una parte de la pantalla o de la pgina web. Existen muchas herramientas gratuitas de este tipo. Nosotros hemos utilizado ColorPic. Si necesitas ayuda para instalar y utilizar la herramienta, visita este bsico .
Un buen ejercicio sera que intentases capturar la paleta del sitio que queremos crear utilizando ColorPic. Captura slo el color de los elementos HTML, no los colores que forman parte de las imgenes.
#AF7051
#AA876F
#D38451
normal son 12px para arriba, siempre que el diseo lo permita. Las recomendaciones en cuanto a usabilidad aconsejan expresar estos tamaos como relativos, utilizando em o %. Si no al body, al resto de elementos. Esto permite que despus, con slo cambiar el tamao de la fuente del body, cambie proporcionalmente el de todos los elementos, y no resulta difcil permitir que el visitante adapte esto a su gusto. En nuestro ejemplo, hemos optado por darle a la fuente en general un tamao de 15px, aadiendo al selector body la propiedad font-size:15px;. Tambin hemos controlado el tamao de los ttulos, esta vez con valores porcentuales, definiendo los estilos h1 {fontsize: 180%;} y h2 {font-size: 150%;}. Tambin tendr un tamao distinto el pie de la pgina. Para diferencialo, creamos una nueva regla de estilo, para la clase div.pie. El estilo para la nueva clase ser div.pie {font-size: 85%;}. Para que se refleje, debemos de asignarle la clase al div. Para hacerlo con KompoZer, hacemos clic en el contenido del pie, y en la barra de estado, hacemos clic derecho sobre la etiqueta div. En el men, elegimos clases pie. Color del texto. Para que el texto sea legible, debe de haber un buen contraste entre el color del texto y el color de fondo. Lo que ms cmodo resulta de leer es un texto oscuro sobre un fondo claro. Tampoco se lee bien el texto sobre una imagen con varios colores. Texto de ejemplo - Texto de ejemplo - Texto de ejemplo - Texto de ejemplo - Texto de ejemplo Adems, debemos de seguir cierta armona, ya que hay colores que al combinarlos pueden resultar demasiado intensos o casi molestos, sobre todo en textos amplios. Texto de ejemplo - Texto de ejemplo - Texto de ejemplo - Texto de ejemplo - Texto de ejemplo Al final, elegir un color u otro acaba siendo una cuestin de gusto. En nuestro ejemplo, vamos a utilizar uno de los tonos marrones oscuros de nuestra paleta para el texto en general, el color #735846. As que le aadimos al body la propiedad color: #735846;. Para los encabezados, vamos a elegir un color un poco ms llamativo, que tenga ms energa. Nos decantamos por un marrn anaranjado de la paleta, #D38451. Por tanto, aadimos la propiedad color: #D38451; a los selectores h1 y h2. Espacios. Un texto muy comprimido no invita a leerlo. Hay que dejarlo espaciado. Para ello es importante dejar separacin (margin o padding) entre el texto y otros elementos,
como imgenes, y entre prrafos. Tampoco deben de estar muy pegadas las lneas del prrafo. Esto lo podemos regular con la propiedad line-height. En nuestro ejemplo, ya iremos regulando el margen de los distintos elementos cuando se vaya complicando el estilo. Pero si vamos a separar un poco las lneas de los prrafos. Definimos un nuevo selector, p, y le aplicamos la propiedad line-height: 1.5em;, utilizando valores relativos al tamao del texto. Alineacin. Es importante alinear correctamente el texto, lo que podemos hacer con la propieada text-align. Por defecto, est alineado a la izquierda (text-align: left;), aunque en prrafos con poco texto, como el pie, suele quedar mejor centrado (text-align: center;). Cuando hay mucho texto, suele haber muchos saltos de lnea, como en las columnas. En este caso, queda mejor el texto justificado (text-align: justify;). En nuestro ejemplo, por lo general tendremos el texto justificado. Por lo que aadiremos al selector body esta propiedad. El texto del pie (div.pie) lo centraremos. De momento, la hoja de estilo de nuestro ejemplo tiene este aspecto: body { font-family: Verdana,Arial,sans-serif; font-size: 15px; color: #735846; text-align: justify; } h2 { font-size: 150%; color: #d38451; } h1 { font-size: 180%; color: #d38451; } p { line-height: 1.5em; }
20px; 20px;
Una vez creada la clase, se la vamos a asignar a las divisiones correspondientes. No tenemos ms que hacer clic en el texto que est dentro de la divisin a la que le queremos asignar la clase, y en la barra de estado de KompoZer, hacer clic derecho sobre la etiqueta div. En el men, elegimos clases contenido. Aplica las clases pie y contenido a los elementos correspondientes de todas las pginas creadas hasta ahora. Al final, el sitio nos habr quedado como podemos ver aqu.
La maquetacin es la distribucin de los elementos en nuestra pgina. Piensa en una pgina web cualquiera. Seguro que distingues algunos elementos, como encabezados, columnas, mens laterales, etc. Hace unos aos, la maquetacin de las pginas web se realizaba utilizando tablas (<table>). Una vez entendido este proceso poda resultar sencillo, aunque si no se dominaban las tablas, poda convertirse en algo tedioso. El problema de las tablas es que generaban un pgina muy encorsetada, y el cdigo se volva complejo de entender. Adems, algunos buscadores encontraban problemas al analizar la estructura de la pgina. Actualmente, la maquetacin con tablas ha cado en desuso, y se realiza utilizando capas (<div>), tambin llamadas divisiones o contenedores. La colocacin de las capas en la pgina se realiza a travs de CSS. Esto permite, por ejemplo, que podamos pasar de un diseo con un men lateral a otro con el men en la parte superior, slo cambiando la hoja de estilos. En esta unidad veremos las tcnicas de maquetacin ms comunes, aunque hay que decir que existen diversas formas de conseguir una misma maquetacin.
Las capas pueden estar anidadas unas dentro de otra. Bsicamente, lo que haremos ser definir cmo se posiciona en la pgina, su colocacin y su tamao. Nota: Lo aqu explicado funciona para webs con el DTD XHTML Transitional o Strict. Al declarar otro DTD, o no hacerlo, puede que el resultado no sea el esperado.
7.2. Tamao
Por lo general, la maquetacin se realiza sobre elementos en bloque. Normalmente divisiones, pero tambin lo podemos hacer con prrafos, listas, o con el propio body. Por defecto los elementos de bloque ocupan todo el ancho del elemento que lo contiene, y su alto se ajusta al contenido.
Cualquier elemento HTML de bloque, tiene dos atributos que pueden definir su tamao: ancho (width) y alto (height). Los valores para estas medidas, pueden ser expresados en las medidas habituales: Tamaos absolutos, utilizando px, cm, etc... Tamaos relativos al elemento que lo contiene, utilizando porcentajes (%). Tamaos relativos a la fuente, utilizando em. El valor auto es el valor por defecto. Por ejemplo, un prrafo, por defecto, tienen un ancho del 100% y un alto ajustado al contenido. Por ejemplo, hemos definido el tamao para el siguiente prrafo: <p style="width:200px; height:100px; border: red 2px solid"> Por defecto, al no ocupar todo el ancho, el elemento queda alineado a la izquierda, como en el ejemplo anterior. Una forma sencilla de centrarlo es dndole al margen (margin) derecho e izquierdo el valor auto. <p style="width:200px; height:100px; border: red 2px solid; margin:
auto;">
Con slo esto, podramos maquetar una pgina web que contenga una columna central, con un ancho fijo o relativo. En el siguiente ejemplo, hemos contenido todo el texto en una capa, a la que le hemos asignado el id="contenido", y en la hoja de estilo le hemos asignado un ancho fijo y la hemos centrado. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /> <title>Una columna</title> <style type="text/css"> body { background-color:#C2C5E7; margin: 0; } div#contenido { width: 800px; margin: auto; border-left: #6699FF 2px solid; border-right: #6699FF 2px solid; background-color: #EDEEF8; padding: 5px; } </style> </head> <body> <div id="contenido"> <h1>Página con una columna</h1> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed facilisis nulla et risus. In eleifend sapien a neque. Etiam fermentum. Sed dapibus suscipit diam. Praesent non nisi ac leo congue vestibulum. Mauris ac orci eu nisl dictum ultrices. Morbi blandit dolor vitae sapien. Vivamus in neque. Integer sit amet mi. Curabitur ipsum lectus, ultricies sit amet, bibendum a, sodales vitae, massa. Quisque metus. Sed blandit hendrerit urna. Aenean eu
id
lacus.
Nunc
vel
odio.
Nulla
<p>Praesent ut ipsum. Nullam vitae nunc. Nam sit amet libero id mauris consectetur pulvinar. Suspendisse vulputate lorem quis lectus. Quisque commodo purus et nibh. Nunc quis mi quis risus hendrerit ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam ac dui. Mauris vulputate fermentum tellus. Morbi rhoncus lorem id nibh. </p> <p>Etiam cursus nulla ac purus. Pellentesque massa elit, dignissim et, volutpat eu, sagittis tristique, sem. Quisque nec leo. Etiam fringilla pellentesque turpis. Vestibulum at est. Sed sapien nunc, faucibus ac, suscipit sit amet, lacinia porttitor, mauris. Curabitur congue justo sed nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer tristique diam vitae ligula. Nulla tincidunt, metus sit amet congue porttitor, purus pede commodo odio, vel varius mauris nulla id augue. Mauris pellentesque volutpat lacus. Maecenas erat. </p> <p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum volutpat, lacus non mattis vulputate, lorem nunc varius odio, in venenatis ante augue quis nisl. Praesent ut mi interdum lorem consequat vulputate. Vivamus ac urna non elit pellentesque sollicitudin. Nunc pharetra nibh in quam. Proin eu magna ut ligula volutpat mollis. Quisque mollis, nulla a porttitor commodo, orci diam commodo pede, ac congue neque libero quis justo. Donec sit amet ligula. In vehicula, elit ut pellentesque viverra, arcu nisl tincidunt ipsum, in viverra dui orci vel massa. Nunc tincidunt congue risus. Donec nec sem id elit egestas porttitor. Fusce ultrices nulla. </p> </div> </body> </html>
scroll. Siempre muestra las barras de desplazamiento. visible. El texto en esta capa no cabe al tener un tamao fijo, por lo que desborda. hidden. El texto en esta capa no cabe al tener un tamao fijo, por lo que desborda. auto. El texto en esta capa no cabe al tener un tamao fijo, por lo que desborda. auto. ste s cabe. scroll. ste s cabe. Si el desbordamiento es visible, puede tapar a los elementos que haya despus.
7.4. Posicionamiento
El posicionamiento es el lugar donde el navegador coloca un elemento HTML para visualizarlo. Por defecto, los elementos se posicionan uno a continuacin de otro. Si se trata de elementos de bloque, como capas, prrafos, listas, etc, se irn colocando uno debajo del otro. A este posicionamiento se le denomina esttico. Utilizando CSS, con la propiedad position podemos cambiar el tipo de posicionamiento de los elementos. Existen cuatro tipos de posicionamiento: static. Es el normal. relative. El posicionamiento relativo coloca el elemento en su posicin normal. A partir de ah, podemos desplazar el elemento, permaneciendo el hueco de su posicin original. absolute. Con el posicionamiento absoluto, especificamos la posicin del elemento con respecto al elemento que lo contiene. fixed. Se establece la posicin del elemento de forma parecida al absoluto, pero el elemento queda fijo en la pantalla, aunque utilicemos barras de desplazamiento. Al cambiar el desplazamiento de un elemento, es fcil que se solape sobre otro. Esto produce que un elemento quede oculto. Para controlar esto, disponemos de la propiedad CSS z-index, a la que podemos asignar un valor numrico. Un elemento con un z-index mayor se ver por encima de otro con un z-index menor. Las cajas del siguiente ejemplo aparecen solapadas. Al pasar el cursor sobre ellas, se le asigna z-index: 10;, lo que hace que se vean por encima del resto. Nota: para que z-index funcione, se debe de haber especificado un tipo de posicionamiento para el elemento.
Para aplicarlo, lo primero es declararlo en el estilo, utilizando position: relative;. Para indicar el desplazamiento horizontal, utilizamos left para desplazarlo a la izquierda y right para hacerlo a la derecha. Utilizar valores negativos, produce el efecto opuesto. Por ejemplo, para desplazar un elemento 40px a la derecha, podramos poner right: 40px; o left: -40px;. Del mismo modo, podemos desplazarlo verticalmente utilizando top para desplazarlo hacia arriba o bottom para hacerlo hacia abajo. Si no establecemos valores de desplazamiento el elemento no cambia su posicin, por eso es muy comn asignar el posicionamiento relativo a elementos para poder utilizar una propiedad que requiere posicionamiento, como puede ser z-index.
Para aplicarlo, lo primero es declararlo en el estilo, utilizando position: absolute;. La posicin y tamao del elemento se indica siempre en relacin a otro elemento que lo contiene. El elemento contenedor ser el ms cercano que haya con posicionamiento no esttico. Si no hay ninguno, se utilizar el body. Para definir la posicin utilizamos top para referirnos a la distancia entre el borde superior del elemento posicionado y el borde superior del elemento contenedor. Por lo tanto left ser la distancia entre los lados izquierdos, right entre los lados derechos y bottom entre los lados inferiores. Para posicionar un elemento del que conocemos sus dimensiones, basta con indicar un punto en vertical (top o bottom) y un punto en horizontal (right o lef). En el siguiente elemento, todas las cajas tienen position: absolute; witdth: 60px; height: 60px y un borde. Para cada una hemos cambiado la posicin. Adems, a la caja que contiene a todas, le hemos dado position: relative; para que las cajas de dentro tomen su posicin a partir de ella. top: left: 0; bottom: left: 0; top: left: 50%; bottom: right: 50%; top: right: 0; top: left: 100px; top: right: 25%; 0;
0;
50%;
50%;
50%;
70px;
25%;
Utilizando este posicionamiento, obtenemos gran flexibilidad para maquetar nuestra pgina. Por ejemplo, podemos dividir la pgina en dos (o ms) columnas. Utilizaremos dos capas, con un alto al 100%, y que la suma de sus anchos sea el total de la pgina. Por ejemplo: div#columna_izquierda {
position: absolute; left: 0; top: 0; height: 100%; width: 50%; } div#columna_derecha { position: absolute; right: 0; top: 0; height: 100%; width: 50%; }
Esto originara dos columnas, cada una con un ancho de la mitad del de la pgina (o del elemento que las contenga). Si queremos obtener dos columnas, una con un ancho fijo y la otra con lo que sobre, lo haremos de otra forma. Por ejemplo, si la columna de la izquierda la queremos con un ancho fijo, por ejemplo de 200px, lo que haremos ser asignar a la columna de la derecha una distancia con el lado izquierdo de esos 200px, y con el lado derecho de 0, en vez de indicar el ancho. div#columna_izquierda { position: absolute; left: 0; top: 0; height: 100%; width: 200px; } div#columna_derecha { position: absolute; right: 0; left: 200px; top: 0;
height: 100%; }
Hay que decir que esto no funciona correctamente en Internet Explorer 6, que no interpreta correctamente el ancho del elemento si definimos la posicin de los dos lados, en vez de un lado y el ancho.
div#columna_derecha { position: absolute; top:0; right: 0; height: 100%; width: 80%; overflow: auto; background-color:#DDF2F9; } </style> </head> <body> <div id="columna_izquierda"> <ul> <li><a href="#ap1">Apartado 1</a></li> <li><a href="#ap2">Apartado 2</a></li> <li><a href="#ap3">Apartado 3</a></li> </ul> </div> <div id="columna_derecha"> <h2> Columna fija a la derecha</h2> <h3 id="ap2"> Apartado 1</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed facilisis nulla et risus. In eleifend sapien a neque. Etiam fermentum. Sed dapibus suscipit diam. Praesent non nisi ac leo congue vestibulum. Mauris ac orci eu nisl dictum ultrices. Morbi blandit dolor vitae sapien. Vivamus in neque. Integer sit amet mi. Curabitur ipsum lectus, ultricies sit amet, bibendum a, sodales vitae, massa. Quisque metus. Sed blandit hendrerit urna. Aenean eu nulla. Praesent vulputate dui id lacus. Nunc vel odio. Nulla eleifend rutrum nulla. </p> <p>Praesent ut ipsum. Nullam vitae nunc. Nam sit amet libero id mauris consectetur pulvinar. Suspendisse vulputate lorem quis lectus. Quisque commodo purus et nibh. Nunc quis mi quis risus hendrerit ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam ac dui. Mauris vulputate fermentum tellus. Morbi rhoncus lorem id nibh. </p> <h3 id="ap2">Apartado 2</h3> <p>Etiam cursus nulla ac purus. Pellentesque massa elit, dignissim et, volutpat eu, sagittis tristique, sem. Quisque nec leo. Etiam fringilla pellentesque turpis. Vestibulum at est. Sed sapien nunc,
faucibus ac, suscipit sit amet, lacinia porttitor, mauris. Curabitur congue justo sed nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer tristique diam vitae ligula. Nulla tincidunt, metus sit amet congue porttitor, purus pede commodo odio, vel varius mauris nulla id augue. Mauris pellentesque volutpat lacus. Maecenas erat. </p> <p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum volutpat, lacus non mattis vulputate, lorem nunc varius odio, in venenatis ante augue quis nisl. Praesent ut mi interdum lorem consequat vulputate. Vivamus ac urna non elit pellentesque sollicitudin. Nunc pharetra nibh in quam. Proin eu magna ut ligula volutpat mollis. Quisque mollis, nulla a porttitor commodo, orci diam commodo pede, ac congue neque libero quis justo. Donec sit amet ligula. In vehicula, elit ut pellentesque viverra, arcu nisl tincidunt ipsum, in viverra dui orci vel massa. Nunc tincidunt congue risus. Donec nec sem id elit egestas porttitor. Fusce ultrices nulla. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed facilisis nulla et risus. In eleifend sapien a neque. Etiam fermentum. Sed dapibus suscipit diam. Praesent non nisi ac leo congue vestibulum. Mauris ac orci eu nisl dictum ultrices. Morbi blandit dolor vitae sapien. Vivamus in neque. Integer sit amet mi. Curabitur ipsum lectus, ultricies sit amet, bibendum a, sodales vitae, massa. Quisque metus. Sed blandit hendrerit urna. Aenean eu nulla. Praesent vulputate dui id lacus. Nunc vel odio. Nulla eleifend rutrum nulla. </p> <p>Praesent ut ipsum. Nullam vitae nunc. Nam sit amet libero id mauris consectetur pulvinar. Suspendisse vulputate lorem quis lectus. Quisque commodo purus et nibh. Nunc quis mi quis risus hendrerit ultricies. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam ac dui. Mauris vulputate fermentum tellus. Morbi rhoncus lorem id nibh. </p> <h3 id="ap3">Apartado 3</h3> <p>Etiam cursus nulla ac purus. Pellentesque massa elit, dignissim et, volutpat eu, sagittis tristique, sem. Quisque nec leo. Etiam fringilla pellentesque turpis. Vestibulum at est. Sed sapien nunc, faucibus ac, suscipit sit amet, lacinia porttitor, mauris. Curabitur congue justo sed nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer tristique diam vitae ligula. Nulla tincidunt, metus sit amet congue porttitor, purus pede commodo odio, vel varius mauris nulla id augue. Mauris pellentesque volutpat lacus. Maecenas erat. </p> <p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum volutpat, lacus non mattis vulputate, lorem nunc varius odio, in venenatis ante augue quis nisl. Praesent ut mi interdum lorem consequat vulputate. Vivamus ac urna non elit pellentesque sollicitudin. Nunc pharetra nibh in quam. Proin eu magna ut ligula volutpat mollis. Quisque mollis, nulla a porttitor commodo, orci diam commodo pede, ac congue neque libero quis justo. Donec sit amet ligula. In vehicula, elit ut pellentesque viverra, arcu nisl tincidunt ipsum, in viverra dui orci vel massa. Nunc tincidunt congue risus. Donec nec sem id elit egestas porttitor. Fusce ultrices nulla. </p>
Recuerda que podemos anidar las capas. Por ejemplo, podramos subdividir una de las capas en otras dos dentro de ella, utilizando el mismo sistema. Otro elemento muy utilizado en la maquetacin, es el encabezado y el pie. Observa que en los ejemplos que hemos visto, colocbamos las capas en la parte superior del todo (top: 0;). Si queremos utilizar un encabezado, en vez de comenzar arriba del todo, debemos de dejar una separacin igual al alto del encabezado. Si el alto del encabezado lo indicamos en porcentajes, el alto de las columnas deber de ser del 100% - el alto del encabezado. En vez de eso, resulta ms claro si en vez del alto de las columnas, indicamos la parte superior (top) y la inferior (bottom). En este caso, nos dar igual la medida que utilicemos. Como mejor lo veremos ser con un ejemplo: div#encabezado { position: absolute; top:0; left: 0; height:10%; width:100%; background-color:RoyalBlue; } div#columna_izquierda { position: absolute; top:10%; left: 0; height: 90%; width:20%; background-color:SandyBrown; } div#columna_derecha { position: absolute; top:10%; right: 0; bottom: 0; width: 80%; background-color:LightGreen; }
Para practicar todo esto, te recomendamos hacer el ejercicio paso a paso Maquetar con posicionamiento absoluto, y despus el ejercicio paso a paso Simular pginas. Y para que veas que con un poco de imaginacin se pueden hacer muchas cosas, te recomendamos el ejercicio paso a paso Texto en 3D.
En el primero de los ejercicios ejercicio paso a paso anterior hemos visto una forma de crear una columna centrada en la pgina. Ya vimos que esto se poda hacer tambin definiendo un ancho y utilizando la propiedad margin: 0 auto;. No da igual utilizar uno u otro. Si lo hacemos con posicionamiento absoluto, y hacemos la ventana ms pequea que la columna, dejarn de verse el lado derecho y el izquierdo por igual. En cambio, de la otra forma, dejara de verse el lado derecho de la columna. Por lo que es mejor este sistema si tenemos un men de navegacin a la izquierda que queremos que se vea siempre. Los principales inconvenientes del posicionamiento absoluto es que hemos de definir el tamao del elemento, no se ajusta al contenido, y no se crean huecos en la pgina, por eso no podemos utilizarlo para cualquier cosa.
Normal. La imagen queda en la posicin inicial, aumentando el alto de la lnea, y no aparecen varias lneas de texto junto a la imagen.
Derecha. La imagen est en la misma posicin, pero con un float: right;. Esto permite que aparezcan varias lneas de texto junto a la imagen, y cuando llegue al final, que contine por debajo.
Izquierda. La imagen est en la misma posicin, pero con un float: left;. Esto permite que aparezcan varias lneas de texto junto a la imagen, y cuando llegue al final, que contine por debajo. Observa que el texto puede quedar demasiado pegado a la imagen. Para solucionarlo, no hay ms que aplicar un pequeo margin a la imagen, hacia el lado que est el texto. Existen algunos inconvenientes al utilizar el posicionamiento flotante. Un elemento que contiene a otro flotante, no lo tiene en cuenta para su tamao a lo alto. Por ejemplo, el siguiente prrafo tiene un borde, y vemos que si la imagen es flotante, "se sale".
Derecha. El prrafo slo ajusta su alto al texto. Adems, si por ejemplo hay varios prrafos con elementos flotantes al mismo lado, hace que se "amontonen":
Derecha. Segundo prrafo. Para solucionar esto, disponemos de la propiedad clear, que rompe el flotamiento. Puede tomar tres valores: left: impide el flotamiento a la izquierda. right: impide el flotamiento a la derecha. both: impide el flotamiento por ambos lados. En el siguiente ejemplo, utilizamos el mismo que en el ejemplo anterior, pero al segundo prrafo le hemos dado la propiedad de estilo clear: right;.
Derecha. Segundo prrafo. Con el posicionamiento flotante, podemos por ejemplo colocar elementos uno al lado del otro. En el siguiente ejemplo, hemos utilizado cajas, todas con float:left; y un pequeo margen para que no se peguen. Observa cmo se comportan cuando cambias el tamao de la ventana: De forma muy parecida, podemos utilizar el posicionamiento flotante para crear columnas en un documento. Basta con que la suma del ancho de las capas que harn de columnas quepa en el ancho de elemento contenedor, y que tengan posicionamiento flotante. En Internet Explorer, si la suma de los anchos es del 100%, para algunos tamaos de ventana no cabe, por lo que mostrar una columna debajo de la otra, aunque esto slo ocurre a veces. Por eso, cuando utilizamos porcentajes es mejor utilizar un ancho total un poco menor, por ejemplo del 99% o 99.5%.
De acuerdo con lo que hemos dicho, podemos dividir un elemento en dos columnas de la siguiente manera: div#columna_izquierda { float: left; width: 30%; height: 100%; background-color:SandyBrown; } div#columna_derecha { float: left; width: 69.5%; height: 100%; background-color:LightGreen; }
Para aadir una cabecera al principio, no hay ms que poner una capa antes de las columnas, con todo el ancho. Y para poner un pie, haramos lo mismo, pero colocndolo despus de las columnas, y rompiendo el flotamiento con clear:both;. div#cabecera { width: 99.5%; height: 10%; background-color:RoyalBlue; } div#columna_izquierda { float: left; width: 30%; height: 80%; background-color:SandyBrown; } div#columna_derecha { float: left; width: 69.5%; height: 80%; background-color:LightGreen; } div#pie { clear: both; width: 99.5%; height: 10%; background-color:Violet; }
La principal diferencia con el posicionamiento absoluto es que al flotante s le afectan los mrgenes, propios y del elemento contenedor, y que no estamos
obligados a definir el alto. En el ejemplo anterior, hemos establecido el alto porque no hay contenido, pero si no lo especificamos, el alto se ajustara al contenido del elemento. Para practicar lo que hemos visto, te recomendamos que hagas los ejercicios Maquetar con posicionamiento flotante y Organizar elementos.
border: #663366 5px double; } div#fijo_derecha { position: fixed; right: 10%; top: 50px; width: 100px; height: 100px; border: #663366 5px double; } div#columna { width: 50%; margin: auto; } .verde, .azul { height: 500px; border: #006666 5px dashed; border-width: 0 5px 5px 5px; position: relative; } .verde { background-color: #66CC99; } .azul { background-color:#6699FF; } </style> </head> <body> <div id="fijo_izquierda">Posicionamiento fijo<br />Izquierda</div> <div id="columna"> <div class="azul"></div> <div class="verde"></div> <div class="azul"></div>
<div class="verde"></div> <div class="azul"></div> <div class="verde"></div> <div class="azul"></div> <div class="verde"></div> <div class="azul"></div> <div class="verde"></div> <div class="azul"></div> <div class="verde"> <div id="fijo_derecha">Posicionamiento />Derecha</div></div> </div> </body> </html> fijo<br
Una de las propiedades de este posicionamiento es que si imprimimos la pgina web y ocupa varias pginas en papel, los elementos fijos se imprimen en todas las pginas, por lo que puede resultar til para pies y encabezados. Nota: Intenet Explorer 6 no soportaba este posicionamiento.
En el diseo fijo, la pgina tiene un tamao exacto, normalmente expresado en pxel. Esto facilita el diseo, sobre todo si est compuesto por imgenes divididas en trozos que deben casar perfectamente, ya que podemos posicionar todo de forma exacta. Tambin nos permite controlar el ancho de los elementos de texto, no creando columnas ni demasiado largas ni demasiado pequeas. Por contra, no aprovecha bien el espacio. Pensemos en una pgina de ancho fijo, de 900px. Si un usuario la ve desde la pantalla de su telfono mvil, que tiene un ancho de 320px, la mayor parte de la pgina no quedar visible. En cambio, si se ve desde un monitor panormico de 24'', con 1920px de ancho, la mayor parte del espacio estar desaprovechado. Como ejemplo de diseo fijo, tenemos la pgina de inicio de aulaClic. Diseo lquido. En el diseo lquido, en vez de unidades absolutas se utilizan relativas al tamao de la ventana. Esto hace que la pgina sea ms flexible a los distintos dispositivos de visualizacin. Por contra, es ms difcil controlar el diseo, sobre todo si se basa en muchas imgenes, porque hay que pensar en qu ocurre si la ventana es muy pequea o muy grande, y que no se descoloque todo al cambiar de tamao. Tambin puede producir lneas de texto muy largas, lo que incomoda la lectura. Aunque el usuario siempre tiene la opcin de hacer ms pequea su ventana. Para intentar controlar un poco el tamao de los elementos, existen las propiedades de estilo max-width (ancho mximo), min-width (ancho mnimo), max-height (alto mximo) y min-height (alto mnimo). Un ejemplo de diseo lquido puede ser la pgina de este curso. Diseo elstico. ltimamente, se ha acuado el trmino "diseo elstico" para el diseo en el que el tamao de los objetos, no es ni fijo ni en relacin al tamao de la ventana, si no al tamao del texto (basado en em), dando al usuario la posibilidad de cambiar su tamao, y en proporcin, el de todos los elementos. Aunque permite que el texto se controle, sigue sin adaptarse a las distintas ventanas, y resulta difcil controlar las imgenes.
Actualmente, la mayora de las pginas ofrecen un diseo fijo, sobre todo si tienen un diseo ms elaborado. Las que ofrecen un diseo ms elstico, suelen mostrar una columna central elstica, que se adapta a la pantalla, y columnas con un ancho fijo, para mens o para la publicidad.
El men es un elemento fundamental de nuestra web, y hemos de dedicarle una atencin especial. Bsicamente, el men es un conjunto de enlaces a las distintas partes de nuestro sitio, y lo ms habitual es encontrarlo en el html de la pgina, o en un archivo javascript. De momento, vamos a ver cmo crearlo desde el HTML. La estructura puede ser cualquiera: podemos hacer un men con divs, con tablas, etc. Pero lo ms comn, por ser una estructura sencilla de manejar, es utilizar una lista (<ul></ul>), y est forma es la que explicaremos. Si desactivamos los estilos del navegador (en Firefox, men Ver Estilo de pgina Sin estilo; IE no tiene esta opcin) o vemos el cdigo fuente de webs como www.elpais.es o www.marca.es, podremos encontrar que en el lugar del men aparece una lista. Por tanto, cada elemento del men es un elemento de la lista <li></li>. El elemento, contendr normalmente un enlace (<a href=""></a>) a una pgina del sitio. Observa que hemos el men de nuestro ejemplo, siguiendo esta estructura: <ul> <li><a <li><a <li><a <li><a <li><a </ul>
Una vez creado el men, todo lo referente a su aspecto lo haremos utilizando estilos CSS. Lo ms cmodo ser darle un id, por ejemplo id="menu". De esta manera podremos referirnos la men como ul#menu, y a sus elementos como ul#menu li. Las listas se muestran casi igual en IE que en Firefox, pero en el primero se desplazan hacia la derecha utilizando margin, y en el segundo padding. Para no liarnos, podemos comenzar por poner ambos a 0, y ya les daremos algn valor si lo creemos necesario. Otra cosa caracterstica de las listas son las vietas. Podemos quitarlas con la propiedad list-style-type: none;, o utilizar una imagen con la propiedad list-style-image: url(imagen.png);. Al final los elementos de la lista tendrn el aspecto de botones que se pueden pulsar. Pero esto no es cierto, ya que el enlace slo est en el texto, porque la etiqueta <a> es un elemento en lnea que se ajusta a su contenido. Podemos cambiar este comportamiento con aplicndole a los enlaces del men la regla display: block. Esto lo convierte en un elemento de bloque, y hace que ocupe todo su contenedor. Daremos un formato apropiado al texto, a los enlaces, y aadiremos un borde a los elementos para diferenciarlos. Todo esto en funcin del diseo que queramos conseguir. ul#menu { margin: 0; padding: 0; list-style-type: none; } #menu li { background-color: #AF7051; border: #5F4232 3px solid; margin: 1px; } #menu a { color: #F0D7B5; text-decoration:none; display: block; padding: 2px; } Inicio Flores Nosotros Contacto Noticias
Tambin podemos ponerlos en horizontal con la propiedad display: inline;. En este caso, lo mostramos como elementos en lnea, por lo que no podremos regular su tamao.
Si estamos utilizando los enlaces con display: block, debemos de darle el mismo alto para que lo llene todo. Otra opcin sera definir el tamao sobre los enlaces, ya que los elementos de lista flotantes se ajustarn al tamao. Recuerda, que siempre puedes centrar horizontalmente el contenido de un elemento con la propiedad text-align: center;. Del mismo modo, podemos definir un alto con la propiedad height. #menu li { background-color: #AF7051; border: #5F4232 3px solid; margin: 1px; width: 150px; text-align: center; height: 30px; }
En CSS no existe una propiedad para centrar verticalmente el contenido de un elemento. Pero en casos como ste, en el que slo tenemos una lnea de texto, podemos utilizar un truco. Si al alto de la lnea (la propiedad lineheight) le damos el mismo tamao que el alto del elemento (en el ejemplo anterior, habra que aadir line-height: 30px;), el texto se mostrar centrado verticalmente.
Es habitual que los elementos de un men tengan varios estilos distintos: el estilo normal; el estilo que muestra cuando tiene el cursor encima, que transmite al usuario la sensacin de que se puede pulsar se elemento; y un tercer estilo que diferencia el elemento "en el que estamos", es decir el que lleva a la pgina en la que el usuario est en ese momento, lo que le ayuda a situarse. Para esto podemos utilizar clases y pseudoclases. Si no sabes cmo cambiar el estilo de un elemento al pasar el cursor sobre l, consulta este bsico en el que te explicamos las pseudoclases.
Tambin puede seguir el ejercicio paso a paso Utilizar pseudoclases CSS, en el que creamos un estilo para nuestro sitio de ejemplo. Utilizar uno o varios de estos estilos depender del diseo que queramos conseguir. Puedes practicar cmo crear algunos mens con el ejercicio paso a paso Crear mens bsicos. Ahora, vamos a darle formato al men de nuestro ejemplo, para que tenga el mismo aspecto que en las siguientes imgenes:
Lo vamos a hacer siguiendo este ejercicio paso a paso. Con los cambios realizados en el ejercicio, nuestro sitio de ejemplo habr quedado como se ve aqu.
Ya hemos visto que podemos incluir imgenes en nuestra pgina web utilizando la etiqueta <img src="imagen.png" alt="texto alternativo" />, y que estas imagen deben
de ser del formato jpg, gif o png, dependiendo del tipo de imagen, para obtener la mejor relacin calidad-tamao. En nuestro sitio de ejemplo, vamos a utilizar imgenes para mostrar fotografas, pero tambin como parte del diseo. Por ejemplo, vamos a crear una galera fotogrfica para las imgenes de las distintas flores que queremos colgar en nuestro sitio. La idea es tener cuatro pginas, una para cada categora de flores (silvestres, ornamentales, exticas y plantas), desde las que podamos acceder a las fotografas de las flores, que son de gran tamao. Como la mecnica es la misma, slo haremos la galera de flores silvestres. Pero te invitamos a que intentes hacer alguna otra sin ayuda al acabar el tema.
alt="Descripcin"
Tambin se suele utilizar javascript para abrir la imagen, consiguiendo efectos ms vistosos. Para crear una miniatura de una fotografa, podramos poner un valor menor en los atributos width y height de la etiqueta img. Y aunque esto hace que se muestre ms pequea, el archivo sigue siendo el mismo, por lo que la pgina tardara lo mismo en cargar. La solucin es crear un nuevo archivo de imagen, reduciendo el original.
Para trabajar con imgenes debemos de emplear algn programa especializado. Nosotros hemos elegido GIMP, por ser un potente programa de retoque fotogrfico totalmente gratuito y libre. Puedes descargar su ltima versin desde
http://www.gimp.org.es/modules/mydownloads/. Si necesitas ayuda para instalarlo, consulta este bsico . Tambin puedes utilizar otros programas, como Photoshop. Incluso, si slo
vamos a redimensionar alguna foto puntualmente, puedes utilizar programas ms simples, como Paint, preinstalado en Windows. Utilizando este programa, nos resultar sencillo crear las miniaturas. Si no conoces los programas de retoque fotogrfico, puedes realizar el ejercicio paso a paso Recortar y redimensionar imgenes con GIMP. En nuestro sitio de ejemplo, tendremos todas las fotografas de las flores en la carpeta fotos, dentro de la carpeta flores. Para cada foto, tendremos la fotografa que queremos mostrar, de un tamao mayor, y la miniatura, que se llamar igual, pero terminado en _mini. La mayora de las fotos, ya estn redimensionadas y tienen la miniatura, por lo que slo tienes que copiarlas de la carpeta fotos_flores, en la carpeta de ejercicios, que habrs descargado a la carpeta del sitio, sitio_flores/flores/fotos. La foto buganvilla.jpg es mucho mayor que las dems. Debes reducirla al 50% y obtener la miniatura tal y como se explica en el ejercicio anterior.
misma carpeta. Para solucionarlo, podemos indicar delante del nombre del archivo ../, para indicar que se encuentra en un nivel superior. Por ejemplo href="../estilo.css". Pondremos la pestaa Flores siempre como activa. En el ttulo (h2) hemos escrito Galera de flores silvestres. Despus del ttulo, en un prrafo (p), hemos escrito Las flores silvestres son aquellas que crecen en nuestra regin. Para verlas, basta con acercarnos a un parque o dar un agradable paseo por los alrededores de nuestra ciudad.. A partir de aqu, vamos a comenzar a aadir las fichas de las flores silvestres que tenemos. Vamos a ver como estructuramos la ficha. Como ejemplo, vamos a utilizar la flor del Agret (Oxalis pes-caprae): Para delimitar las distintas fichas, lo ms cmodo es crear un div para cada una. Como a este div le definiremos ciertas propiedades de estilo, podemos pensar ya que necesitar ser identificado. Y como habr varios, y en varias pginas, vamos a asignarle la clase ficha. Dentro de este div.ficha, colocamos la imagen de la miniatura:
<img alt="Agret" title="Agret" src="fotos/agret_mini.jpg" height="75" width="100" />. Como al pulsar sobre la miniatura, hay que abrir el original, debemos de colocar un enlace con la imagen dentro. Por tanto quedar:
<a href="fotos/agret.jpg"><img ... /></a>. Junto a la imagen, tenemos que colocar dos elementos de texto. En la primera lnea el nombre de la flor, y en el segunda el nombre cientfico. Podramos colocar el texto en un prrafo, y separar los nombres con un salto de lnea (<br />). Pero como queremos diferenciar un poco el nombre cientfico, lo ms cmodo ser ponerlo en otro prrafo con una clase, por ejemplo class="cien". Por lo tanto, el texto nos ha quedado as: <p>Agret</p> <p class="cien">Oxalis pes-caprae</p>. Si te fijas en el resultado final del ejemplo, vers que hay una pgina con un listado de las flores, y enlaces a cada una de ellas. Para poder enlazar, vamos a asignarle in ID al div.ficha. Para no liarnos, seguiremos una nomenclatura fcil de recordar. Por ejemplo,
utilizaremos el nombre de la flor en minsculas, y si tiene espacios, los cambiaremos por guiones bajos. Por tanto, la ficha de la flor de Agret nos ha quedado as: <div id="agret" class="ficha"> <a title="Agret height="75" width="100" <p>Agret</p> <p </div> href="fotos/agret.jpg"><img alt="Agret" Oxalis pes-caprae" src="fotos/agret_mini.jpg" /></a> class="cien">Oxalis pes-caprae</p>
Nota: Observa que el archivo de imagen tiene el nombre de la flor, que adems hemos puesto en los atributos alt y title. Esto aumenta la importancia de la imagen en los navegadores al buscar el nombre de la flor, y hace ms probable que al buscar fotos de Agret en Google aparezca nuestra foto, lo que puede atraer usuarios interesados por la temtica de la pgina.
Ahora vamos a definir el estilo de la ficha. Para ver mejor el efecto, crea la ficha de unas cuantas flores ms. En la carpeta fotos_flores encontrars tambin el archivo
nombre_flores.txt, con los nombres comunes y cientfico de alguna de las flores utilizadas. La idea que tenemos es la de crear una fichas de tamao fijo, de 250 px de ancho por 120 px de alto. De manera que el nmero de fichas que se muestren por lnea dependa del ancho de la ventana, lo que agradecern los usuarios con grandes pantallas. Declaramos el selector div.ficha. Le asignamos las propiedades de tamao fijo width: 250px; height: 120px;. Para que queden en la misma lnea, le damos un flotante a la izquierda (float: left;). Para delimitar mejor el borde de cada ficha, le aadimos un borde (border: 1px solid #d38451;). Al estar flotantes, las fichas quedan pegadas. Para separarlas un poco, le aadimos un margen (margin: 15px;). Si lo pruebas, vers que las fichas se salen del div.contenido. Para solucionarlo, podemos aadir un prrafo vaco despus de las fichas, que rompa el flotante (<p style="clear:both;"></p>). Vamos a cambiar el estilo de las imgenes de la ficha (div.ficha img). El texto debe de quedar a la derecha de la imagen, por lo que esta deber de ser flotante (float: left;). Tambin la separaremos un poco de los bordes de la ficha (margin: 3px;). Como es un enlace, el navegador le agrega un borde azul. Vamos a cambiarlo por otro ms acorde con el diseo (border: 2px solid #d38451;). Para destacar que se puede pulsar sobre las imgenes, haremos que al pasar el cursor por encima (div.ficha img:hover), el borde cambia el mismo naranja que las pestaas (border-color: #ff7600;). As los usuarios asociarn ese color a los elementos de navegacin. Por ltimo, nos queda darle formato al texto, que lo definiremos sobre el nuevo selector div.ficha p. Al texto le daremos el color del fondo del body, (color: #3d2e2a;). Vamos a cambiarle el margen a slo 3px (margin: 3px;) y a reducir un poco el tamao de la letra (font-size: 95%;), y el alto de la lnea (line-height: 1.3em;). Esto ltimo lo notaremos cuando alguno de los nombres ocupe ms de una lnea. El prrafo que contiene el nombre cientfico (div.ficha p.cien), lo pondremos en cursiva (font-style: oblique;), y lo separaremos un poco del prrafo anterior (margintop: 1em;), y recuperamos el color de texto general (color: #735846;). Observa que no
nos hara falta poner div.ficha en el selector, pero as luego es ms fcil identificar qu estilos pertenecen a la ficha. Algunas fichas van a contener dos o tres miniaturas, por lo que no cabrn en el ancho de la ficha. As que vamos a definir otro tipo de ficha, igual que la anterior, pero con el doble del tamao, que ser el ancho de las dos fichas, ms el espacio entre ambas : 250px (ancho) + 15px (margen derecho) + 15px (margen izquierdo)+ 250px (ancho) = 530px. No tenemos que volver a definir la ficha, simplemente definimos una nueva clase con ese ancho div.ficha_doble {width: 530px;}, y se la asignamos a las divisiones que nos interese, sin quitar la clase ficha, separando las clases con espacios class="ficha ficha_doble". Esto hace, que como ambas clases son igual de concretas, si hay propiedades repetidas se prevalece la declarada en ltimo lugar. Por lo que esto slo funcionar si en la hoja de estilo, la clase div.ficha_doble est definida despus de la clase div.ficha. En resumen, todos los estilos declarados en este apartado son los siguientes: div.ficha { border: 1px solid #d38451; margin: 15px; width: 250px; height: 120px; float: left; } div.ficha img { border: 2px solid #d38451; margin: 3px; float: left; } div.ficha img:hover { border-color: #ff7600; } div.ficha p { margin: 3px; line-height: 1.3em; font-size: 90%;
color: #3d2e2a; } div.ficha p.cien { margin-top: 1em; font-style: oblique; color: #735846; } div.ficha_doble { width: 530px; }
Puedes ver como ha quedado hasta ahora la pgina con las flores silvestres aqu. Ahora, slo queda hacer lo mismo con el resto de categoras. Observa que de momento no tenemos enlaces a estas pginas. Esto lo haremos en el tema siguiente.
<table></table>. Dentro de ella, podemos crear una fila (<tr></tr>) para cada flor, y una celda (<td></td>) para el nombre, otra para la categora y otra para el enlace. Si no conoces las tablas, o quieres aprender ms sobre su estructura, consulta este bsico .
Utilizando KompoZer podemos insertar una tabla pulsando en el icono de redaccin. Al hacerlo, aparece una ventana, con tres pestaas:
de la barra
En Rpido, podemos elegir con un clic el nmero de filas y columnas, para una tabla pequea. En Preciso, especificamos filas y columnas numricamente, pudiendo concretar tambin la Anchura de la tabla y el Borde. En Celda, podemos ajustar la alineacin, y las propiedades de cellpadding y cellspacing, que por defecto estn a 2. De momento, dejamos las opciones por defecto, y establecemos 3 columnas y tantas filas como flores tengamos. Con estas opciones, KompoZer nos ha creado el siguiente cdigo: <table style="text-align: cellpadding="2" <tbody> <tr> <td></td> left; width: 100%;" border="1" cellspacing="2">
Observa que la tabla contiene un tbody. Esta etiqueta no es obligatoria, y podramos quitarla. La primera fila ser el encabezado. As que vamos a cambiar las celdas normales (<td></td>) por celdas de encabezado (<th></th>), aunque tambin podramos crear una clase para el td. Podemos hacerlo directamente en el cdigo fuente, o utilizando KompoZer, seleccionando las tres celdas con Ctrl pulsado, volviendo a pulsar en Tabla y eligiendo Estilo de celda Cabecera. En cualquier caso, tras introducir en las celdas de encabezado Nombre, Categora y Ficha, nos habr quedado el siguiente cdigo para la primera fila: <tr> <th>Nombre</th> <th>Categoría</th> <th>Ficha</th> </tr>
Ahora, para cada una de las flores, rellenamos una fila, siguiendo el orden alfabtico de los nombres. Por ejemplo, para la flor de Agret, hemos introducido la siguiente fila: <tr> <td>Agret <td>Silvestres</td> <td><a </tr>
Oxalis
pes-caprae</td>
href="silvestres.html#agret">Ver</a></td>
Observa que el enlace apunta a la pgina de su categora, y dentro de ella, al ID de su ficha. Una vez que tenemos todas las flores, o por lo menos unas cuantas para apreciar mejor el estilo, vamos a definirlo. Como puede que tengamos ms tablas en nuestro sitio, tenemos que identificar esta tabla. Podramos utilizar una clase, pero emplearemos un ID, ya que en principio, no vamos a
aplicar este estilo a otras tablas. En todo caso siempre podramos cambiarlo. Le asignamos el id="flores". No vamos a cambiar demasiado de la tabla (table#flores). Lo nico, reducir un poco la fuente (font-size: 90%;), y aadirle un borde (border: 1px solid #ff7600;), y darle un color de fondo de nuestra paleta (background-color: #f0d7b5;), un poco ms oscuro que el del div.contenido. En vez de utilizar bordes para separar las cedas, vamos a crear una nueva clase, llamada alterna (table#flores .alterna), que aplicaremos a filas alternas para diferenciarlas, y que slo cambiar el color de fondo, para que sea el mismo que el del div.contenido (background-color: #f5e4cc;). En el HTML de la tabla, para que no muestre el borde, quitamos el atributo border o lo ponemos a 0. Asignamos la clase alterna a la primera fila, despus del encabezado, y la vamos aplicando de forma alterna a las sucesivas filas. Para acabar, como la ltima columna siempre contendr el mismo texto, vamos a darle un ancho fijo. Eso s, en em, por si ms tarde decidimos cambiar el tamao de la fuente. Para hacerlo, podramos por ejemplo definir columnas <col />, como hemos comentado en el avanzado. Pero la forma ms simple es darle el ancho que queramos a la primera celda de la columna, la del encabezado, y el resto se ajustar a ese ancho. Le asignamos al th el estilo incrustado style="width: 5em;". Puedes ver como ha quedado hasta ahora la pgina pulsando aqu.
Si buscas este tema en Internet, encontrars muchas formas de cmo lograr este efecto. Ms o menos complicadas, unas utilizando imgenes, otras libreras javascript, etc... Nosotros vamos a utilizar un mtodo, utilizando imgenes y CSS, para convertir estas divisiones: En esto otro: Se trata de dos elementos distintos. El primero, el de fondo claro sobre el fondo oscuro, y el segundo, el del borde naranja. Vamos a comenzar fijndonos en el primero: Bsicamente, lo que pretendemos hacer es simular el elemento redondeado, colocando en las esquinas estas imgenes: , , ,y .
As que el primer paso es crear nuestras imgenes. Hasta ahora habamos utilizado GIMP. Pero se trata de un programa de retoque fotogrfico, no de dibujo. Para crear grficos, necesitamos un programa de dibujo que nos permita trabajar con grficos vectoriales, como puede ser Illustrator o CorelDraw, de los que encontrars cursos en aulaClic. Siguiendo en la lnea del curso, nos hemos decantado por Inkscape, una herramienta totalmente gratuita y libre que puedes descargar desde su web. Si necesitas ayuda con la descarga e instalacin del programa, consulta este bsico .
Ahora, para crear las esquinas, puedes seguir el ejercicio paso a paso Crear esquinas redondeadas. Una vez que tenemos las imgenes, vamos a ver cmo las colocamos. Tenemos una divisin, en este caso con la clase contenido. En un principio, podemos pensar en poner las imgenes directamente en la divisin. Luego, podemos situarlas en las esquinas con posicionamiento absoluto. Podra ser una solucin, aunque la idea es que el diseo sea independiente de la pgina, que si cambiamos la hoja de estilo, podamos volver a ver las esquinas angulares, por ejemplo, o la imagen de otro color. Por lo tanto, vamos a introducir las imgenes utilizando CSS, y la nica propiedad que puede mostrar una imagen es background-image. Y esta es la que utilizaremos. Utilizando esta propiedad, es sencillo poner una imagen en una esquina de una divisin. Por ejemplo, para colocarla en la esquina superior izquierda, escribiramos:
div { background-image: url(imagenes/red_lt.png); background-position: left top; background-repeat: no-repeat; height: 25px; border: red 1px dotted; }
El problema de background-image es que slo podemos poner una imagen por elemento. Pero si por ejemplo, tenemos un div dentro de otro, podemos asignarle a cada uno una imagen. En el siguiente ejemplo, le damos in borde a cada uno para que se vea, donde estn, pero el de dentro no debe de llevar borde, porque si no las imgenes no quedan alineadas. div { background-image: url(imagenes/red_lt.png); background-position: left top; background-repeat: no-repeat; height: 25px; border: red 1px dotted; } div div{ background-image: url(imagenes/red_rt.png); background-position: right top; background-repeat: no-repeat; height: 25px; border: blue 1px dotted; }
Utilizando esto, podramos conseguir el resultado que buscamos superponiendo cuatro divisiones, y a cada una ponindole su imagen de fondo. Sera una posible solucin, si nos aseguramos de que como mnimo las divisiones tengan 50px de alto. Pero nosotros vamos a variarlo un poco. La estructura que vamos a hacer es la del ejemplo anterior, a continuacin, otro div donde introduciremos el contenido (texto, imgenes, etc...) y al final, otro div doble con las esquinas inferiores. Todo ello agrupado dentro de una divisin, que en nuestro ejemplo llamaremos div.redondo. Para ver cmo aplicamos todo esto a nuestro ejemplo, puedes seguir el ejercicio paso a paso Redondear esquinas con CSS. Tambin hemos creado otra caja redondeada para algunos elementos dentro del contenido de la pgina, como la tabla de las flores, o la cita de la pgina nosotros.html. Esta caja tiene alguna cosilla ms, porque tambin tiene un borde. Puedes ver cmo lo hemos hecho en este avanzado .
Puedes ver el aspecto de una pgina de nuestro sitio con lo visto hasta ahora pulsando aqu.
incluir un atributo alt en las imgenes. Y si la imagen no deja bien claro a dnde va el enlace, aadir adems un texto descriptivo en el atributo title. En elementos con texto, como botones o pestaas, para evitar problemas con las imgenes, y porque resulta mejor para navegadores, buscadores, personas con deficiencias visuales que usen navegadores especiales, etc... es muy recomendable utilizar un texto normal, y la imagen como fondo. Y esto es lo que haremos en nuestro ejemplo. Como los elementos son de un tamao determinado 90x40 px, crearemos tres imgenes de fondo: una la pondremos con el elemento normal, otra cuando est el ratn encima, y otra para la clase activa.
superior derecha que nos permite regular el radio de redondeo de sus cuatro lados, mientras tengamos la herramienta seleccionada.
Tambin hemos visto que en la barra de herramientas superior hay unos controles que nos permiten cambiar el tamao del elemento.
Con esto, no nos resultar difcil crear la pestaa. Creamos un cuadrado, de 88px de ancho (ms vale que nos sobre un poco que intentar encajarlo al pxel) y 45 px de alto (el alto no tienen que ser los 40px exactos, si sobra algo, no se mostrar), con los bordes sin redondear. Una vez creado, el rectngulo, con l seleccionado pulsamos las teclas Ctrl + D. Este comando, duplica el elemento. Es decir, ahora tenemos dos rectngulos iguales, uno encima
, y con el elemento
seleccionado, pulsamos la tecla Flecha Arriba varias veces, para desplazarlo un poco hacia arriba, sin que se pierde la alineacin vertical. Al rectngulo que queda arriba, le redondeamos las esquinas de nuevo con la herramienta Crear rectngulos y cuadrados .
Como vemos, para crear la pestaa, tenemos que unir estos elementos. Para hacerlo, seleccionamos los dos, y pulsamos en el men Trayecto Unin. Con esto hemos creado un nico elemento con la forma de la pestaa.
Para editar el relleno de un elemento, hacemos doble clic sobre el color de relleno en . En la ventana Borde y relleno, en la ventana Relleno, selecciona Gradiente lineal.
Al hacerlo, el relleno del elemento ha cambiado, mostrando un degradado de negro a transparente. Adems, muestra un control que nos permite regular la direccin de gradiente.
En este caso, lo hemos regulado para que quede en vertical (el de la derecha de las imgenes anteriores). Para cambiar los colores, pulsamos en Editar, para acceder a la ventana Editor de gradiente.
Cada color del degradado es una parada. Al inicio, solo hay dos paradas, una al principio y otra al final. Podemos aadir paradas en el medio, pulsando en Aadir parada. La nueva parada tomar el color que tiene el degradado en el punto en el que se crea. Las distintas paradas se eligen en el desplegable que hay debajo de la vista previa del degradado. Vamos a darle colores a las distintas paradas: a la primera, le hemos dado el color 5f4232ff (recuerda, que los dos ltimos valores, ff, se refieren a la opacidad). A la segunda, le hemos dado el color bf9a81ff. Los colores, se pueden introducir directamente en la casilla RGBA.
Para desplazar un poco la parte ms oscura hacia arriba, aadimos una parada. Observa que el control Desvo est a la mitad. Desplazndolo, podemos acercar la parda a uno u otro extremo, as que lo acercamos un poco a la izquierda (a la parte oscura). Con esto, hemos conseguido el siguiente relleno:
Lo mismo hemos hecho con el borde, pero de un color claro (f5e4ccff) a uno oscuro (bf9a81ff), tambin en vertical, y le hemos aumentado un poco el Ancho de borde desde la pestaa Estilo del trazo. Al cambiar el grosor, asegrate que el ancho no excede los 90 px. Si es as, cmbialo. Al final, la pestaa nos ha quedado as. La ponemos sobre el mismo color de fondo que utilizamos en la pgina, para que se vea mejor:
Una vez que tenemos la pestaa, la hemos duplicado dos veces ( Ctrl + D) para crear las otras dos que nos hacen falta. A ambas copias, le editaremos el relleno o borde. Antes de editar uno de los degradados debemos duplicarlo pulsando en Duplicar en la ventana relleno y borde.
Si no, al editarlo, vers que cambian todos los elementos que tienen asignado ese degradado. Seleccionndola, y desde el men Archivo Exportar, con el botn Seleccin pulsado, la hemos guardado en la carpeta imagenes del sitio con el nombre pest_normal.png.
Para la imagen que mostraremos al poner el cursor encima, le hemos cambiado el color de la primera parada del borde por el mismo naranja del borde de la pestaa, ff7600ff. Al hacerlo, hemos borrado la parada, y la hemos vuelto a crear, para que tenga un tono anaranjado.
Y para la pestaa activa, le hemos cambiado el relleno, de modo que la parte baja acabe en el mismo color que tiene la divisin que contiene el texto (f5e4ccff), y hemos jugado con el Desvo y aadido paradas hasta encontrar un estilo que nos gustase.
La hemos guardado como pest_activa.png. Guarda el documento en el que ests creando las pestaas.
Una vez que tenemos las imgenes, cambiamos los estilos para que en vez de fondo y borde, muestren la imagen creada. Edita el estilo #menu li, y qutale todas las propiedades referentes al borde (border-) y el color de fondo (background-color). Aade las propiedades para la imagen que va a utilizar (background-image: url(imagenes/pest_normal.png);) Para que se vea bien, la colocaremos arriba del todo y centrada (background-position: center top;) y sin repeticin (background-repeat: no-repeat;). Lo mismo para #menu li:hover, le quitamos el color de borde (border-color: #ff7600;) y aadimos la imagen de fondo correspondiente (background-image: url(imagenes/pest_hover.png);). Y para #menu li.activa, quitamos el estilo, y lo cambiamos por la imagen de fondo (background-image: url(imagenes/pest_activa.png);). Puedes ver otro ejemplo de men con imgenes con el ejercicio paso a paso Men con imgenes. Puedes ver el aspecto de una pgina de nuestro sitio con lo visto hasta ahora pulsando aqu.
La pestaa Flores, tiene el siguiente cdigo: <li class="activa"><a href="index.html">Flores</a></li> Nota: Puede que tengas el enlace como ../flores/index.html. Funcionara igual. Lo que vamos a hacer, dentro del elemento, pero despus del enlace, crear una nueva lista, con enlaces a las cuatro categoras, asignando la clase activa a la correspondiente en cada caso: <li class="activa"><a href="../flores/index.html">Flores</a> <ul> <li><a href="exoticas.html">Exóticas</a></li> <li><a href="ornamentales.html">Ornamentales</a></li> <li><a href="plantas.html">Plantas</a></li> <li class="activa"><a href="silvestres.html">Silvestres</a></li> </ul> </li>
No necesitamos asignarle una clase o un ID, ya que como es una lista dentro del men, podemos utilizar el selector #menu ul. Para seguir con el diseo, utilizaremos imgenes que simulen botones. En este caso los vamos a hacer de 106 x 30 px para que nos quepa el texto ms largo. Utilizando Inkscape, y en el mismo documento que creamos las pestaas, dibujamos un rectngulo (con la herramienta Crear rectngulos y cuadrados grosor de borde que en las pestaas. ) con los bordes redondeados, y el mismo
Como son tres copias, tenemos que crear tres, duplicndolo dos veces ( Ctrl + D). Les vamos a dar el mismo estilo que a las pestaas. Para eso, asgnale un degradado tanto al borde como al relleno. Al hacerlo, vers que en la lista desplegable de los degradados, puede seleccionar cualquiera de los utilizados en el documento. Eso s, el degradado aparece horizontal, tendrs que cambiarlo a vertical. Estas son las tres imgenes que hemos creado:
Les hemos llamando, respectivamente, submenu_normal.png, submenu_hover.png y submenu_activa.png. Ahora, le damos el estilo al men, teniendo en cuenta que a sus elementos se les est aplicando el mismo estilo que a las pestaas: A la lista (#menu ul), le vamos a reducir un poco el texto (font-size: 90%;). Como siempre, le quitamos el padding (padding: 0;), margen (margin:0;) y las vietas (liststyle-type: none;). Ahora, vamos con los elementos (#menu ul li). Le damos el tamao ( height: 30px; line-height: 30px; width: 108px;) y la imagen utilizada (background-image: url(imagenes/submenu_normal.png); background-position: center center; background-repeat: no-repeat;). La pestaa (en nuestro caso) mide 88 px de ancho, mientras que el submen 108 px. Para que quede centrado, debemos de desplazarlo 10 px a la izquierda, por ejemplo con un margen negativo (margin: 2px 0 0 -10px;). Cambiamos la imagen de fondo cuando el cursor est encima (#menu ul li:hover { background-image: url(imagenes/submenu_hover.png); }) y cuando est activo #menu ul li.activa ({ background-image: url(imagenes/submenu_activa.png); }). Si lo probamos, veremos que hay que cambiar varias cosas. Por ejemplo, el color del texto siempre es el ms oscuro. Esto lo causa el estilo #menu li:activa a. Para solucionarlo, en cada selector que establece el color, debemos de aadir tambin el selector del submen con la clase activa. Y lo mismo pasara cuando la pestaa Flores no es la activa pero tienen le cursor, que todos los textos se veran naranja. As, cambiamos #menu a por #menu a, #menu li.activa ul a, #menu li:hover ul a, cambiamos #menu li:hover a por #menu li:hover a, #menu li.activa li:hover a, #menu li:hover li:hover a, y cambiamos #menu li.activa a por #menu li.activa a, #menu li.activa li.activa. Por otro lado, podemos ver que el texto queda por encima del submen:
Eso pasa porque se ve por encima el elemento que est "escrito" en ltimo lugar, y el men est antes que el texto. Para solucionarlo, basta con darle posicionamiento a los elementos (#menu ul li), ya que los elementos posicionados se muestran por encima del flujo normal. Para que no se altere nada, utilizamos el relativo (position: relative;). Si lo pruebas, vers que funciona, pero slo porque los elementos que lo taparan no tienen tambin posicionamiento. Para evitar que pueda ser tapado por elementos con posicionamiento, utilizaremos la propiedad z-index, por ejemplo con un valor 10 (z-index: 10). Esto hace que se muestre por encima de cualquier elemento sin z-index, o con z-index menor que 10. Esta propiedad slo funciona en elementos posicionados. Ahora, tendramos que hacer que el men se despliegue y se oculte, pero no podemos hacerlo con lo que hemos visto ahora, necesitamos Javascript, por lo que lo veremos en el tema siguiente. De momento, deja el men slo en la pgina flores/silvestres.html. Ya lo pondremos en el resto cuando est acabado. Puedes ver el aspecto de una pgina de nuestro sitio con lo visto hasta ahora pulsando aqu.
shape, que es la forma del rea, pudiendo ser rect (rectngulo), circle (crculo) o poly (polgono). coords indica las coordenadas del rea, en pxeles. Depende de la forma. Por ejemplo, un rectngulo tiene cuatro valores: inicio-x, inicio-y, fin-x, fin-y. Un crculo, centro-x, centro-y y el radio, y un polgono un valor x e y para cada punto. href es la direccin del enlace. Despus, para asociar el mapa a la imagen, aadimos a la imagen el atributo usemap, como se ve en el siguiente ejemplo. Para nuestro sitio de ejemplo, vamos a crear el siguiente mapa para acceder a las categoras, que colocaremos en la pgina inicial: <img src="imagenes/mapa_categorias.jpg" alt="Categorías" width="600" height="500" usemap="#Mapa" /> <map name="Mapa" id="Mapa"> <area shape="rect" coords="0,0,300,250" href="flores/exoticas.html" alt="Flores exóticas" title="Galería de flores exóticas" /> <area shape="rect" coords="301,0,600,250" href="flores/ornamentales.html" alt="Flores ornamentales" title="Galería de flores ornamentales" /> <area shape="rect" coords="0,251,300,500" href="flores/plantas.html" alt="Plantas" title="Galería de plantas" /> <area shape="rect" coords="301,251,600,500" href="flores/silvestres.html" alt="Flores silvestres" title="Galería </map> de flores silvestres" />
Observa que la imagen mide 600 px de ancho y 500 px de alto. La hemos dividido en cuatro reas, rectangulares: arriba izquierda, arriba derecha, abajo izquierda y abajo derecha. A cada una, le hemos asignado el enlace a la categora correspondiente, y le hemos aadido el atributo title para que se muestre el texto al pasar el cursor. La imagen utilizada, la hemos generado con GIMP utilizando las imgenes
mapa_exoticas.jpg, mapa_ornamentales.jpg, mapa_plantas.jpg y mapa_silvestres.jpg que puedes encontrar en la carpeta de ejercicios. En los videotutoriales del curso puedes ver detalladamente cmo fusionamos las imgenes. Puedes ver como ha quedado la pgina pulsando aqu.
9.11. Logo
Para acabar, crearemos una imagen que haga de logo para nuestro sitio, con la que reemplazaremos el actual encabezado <h1>. El aspecto del sitio quedar as:
Como siempre que queremos crear un grfico, utilizaremos Inkscape. Esta vez lo haremos con la herramienta Texto . Nosotros hemos utilizado una tipografa Forte, con un tamao
Para crear el reflejo, hemos duplicado el texto, lo hemos reflejado verticalmente y lo hemos puesto debajo.
Despus, sobre el reflejo hemos creado un rectngulo con un degradado de negro a gris. Con l crearemos una mscara de opacidad. El negro indica la zona que ser transparente. Y cuando un color ms se aproxime a blanco, ms opaco ser el objeto. Es decir, se ver ms. Cuando tengamos el degradado a nuestro gusto, con el rectngulo y el reflejo seleccionado, vamos al men Objeto y elegimos Mscara Aplicar.
Utilizando el mismo sistema para el reflejo, hemos creado la imagen de la flor. Hemos llamado a las imgenes logo.png y pensamiento.png. Es hora de colocarlas en nuestro sitio. No tenemos ms que cambiar el contenido del <h1> por las dos imgenes: <h1><img src="imagenes/pensamiento.png" alt="" width="65" height="90" /> <img src="imagenes/logo.png" height="70" id="logo" /></h1> alt="Floramics" width="269"
Observa que hemos puesto el mismo texto de la imagen en su atributo alt. As, si la imagen no se carga se ver el texto como lo tenamos hasta ahora. Tambin le hemos asignado un id. Lo hemos hecho porque le vamos a dar un poco de padding arriba y abajo para alinearla mejor con la imagen de la flor: #logo { padding: 15px 0 5px; } Lo hacemos en la hoja de estilo porque puede que un da decidamos cambiar la imagen de la flor, y as no tendremos que ir pgina por pgina para ajustar los nuevos mrgenes. Haz los cambios y prueba la pgina. El primer problema que observamos es que queda una separacin entre las pestaas y el contenido de la pgina.
Esto se produce porque el h1 es ahora mayor al tener las imgenes. Para solucionarlo, podemos aadir un margen superior al men, de manera que la suma del margen, y su alto que es de 40px, sea igual o mayor al alto del h1, que ahora es de 90px. Por lo tanto, le aadimos 55px. #menu { margin: 55px 40px 0 0; padding: 0; font-size: 105%; list-style-type: none; float: right; }
Con estos cambios ocurre otra cosa. Al probar la pgina, vemos que si esta es lo bastante ancha, el logo y las pestaas se ven en una misma lnea. Pero si la reducimos, el logo "salta" encima de las pestaas, dejando la separacin del margen que le acabamos de dar, lo que no queda muy bien. Lo que vamos a hacer es dar un ancho mnimo a nuestra pgina, lo justo para que no se amonten los elementos. Si la ventana es mayor que ese ancho, no pasar nada. Pero si se hace menor, el ancho se tornar fijo, mostrando las barras de desplazamiento horizontales. Esta propiedad es min-width. Tambin tenemos min-height para el alto, y max-width y max-height para los mximos. Aplicamos la propiedad al body de la pgina. body { ...
min-width: 900px;
Cuando la ventana sea mayor de 900px, la pgina mostrar un diseo lquido, que se har fijo si la hacemos menor de ese tamao. Tras realizar todos los cambios de esta unidad, nuestro sitio ha quedado con este aspecto.
Vamos a aadir algunos comportamientos extra a nuestro sitio. Por ejemplo, vamos a crear un men desplegable, para que al ponernos sobre la pestaa Flores, se muestren las categoras existentes. Por otra parte, vamos a hacer que al pulsar sobre las imgenes, en las pginas de las categoras, se abra una nueva ventana, pero con el nombre de la flor, una imagen, y un enlace que permita cerrar la ventana. Pero todo esto no podemos hacerlo slo con HTML y CSS. JavaScript es un lenguaje de programacin que el navegador es capaz de interpretar y ejecutar sobre la pgina web. Utilizando este lenguaje podemos crear comportamientos que no estn disponibles en el html, por ejemplo mostrar un mensaje pulsando aqu, abrir una ventana, cerrarla... O tambin podemos utilizarlo para cambiar la pgina. Por ejemplo, pulsando en los colores, la divisin toma ese color como color de fondo. VerdeRojoAzul Podremos crear desde los compartimentos ms simples, hasta otros realmente complejos. Puedes ver algunas cosas que se pueden lograr con JavaScript en la web Chrome Experiments.
getElementById('id_del_elemento'), que nos permite referenciar un elemento de la pgina con indicando su ID. Como nuestro submen no tiene un ID, le vamos a asignar el ID sub_flores. Por lo tanto, para referenciar a nuestro submen, escribiramos en el cdigo javascript document.getElementById('sub_flores'). Ponemos document, porque es el nombre del objeto al que pertenece el mtodo. El objeto document se refiere al contenido del body de nuestra pgina.
Una vez referenciado un elemento, podemos acceder a sus atributos, poniendo . (punto) detrs del elemento. Por ejemplo si ejemplo fuese el ID de una imagen, podramos cambiar su ancho a 200 px con: document.getElementById('ejemplo').width='200px'; Del mismo modo, podramos cambiar su clase por otra utilizando:
document.getElementById('ejemplo').class='nuevaclase'; Con .style. podemos acceder a las propiedades de estilo. Por ejemplo, podramos cambiar el color del texto del prrafo parrafo con:
document.getElementById('parrafo').style.color='#00ffaa'; Por lo tanto, la instruccin javascript que mostrara nuestro submen podra ser: document.getElementById('sub_flores').style.display='block'; Cuando llamemos a esa lnea de cdigo, el men se mostrar. Y cuando lo haremos? Cuando el cursor est sobre la pestaa Flores. Esto produce un evento. JavaScript dispone de una serie de eventos sobre los elementos de la pgina, es decir, una serie de acciones que permiten hacer algo cuando son detectadas. Por ejemplo: onclick. Se produce al hacer clic sobre un elemento. onmouseover. Se produce al poner el cursor sobre un elemento. onmouseout. Se produce cuando el cursor est fuera del elemento. Puedes ver los eventos existentes y cundo se producen en este avanzado .
Los eventos se colocan en el elemento que queremos que los produzcan, como si fuesen atributos HTML. En nuestro caso, queremos que el men se muestre cuando el cursor est sobre la pestaa Flores, es decir, en el evento onmouseover del li. Como valor del atributo, escribimos el cdigo JavaScript. Por tanto, quedar: <ul id="menu"> <li><a href="../index.html">Inicio</a></li> <li class="activa" onmouseover="document.getElementById('sub_flores').style.display='blo ck';"><a href="index.html">Flores</a> <ul id="sub_flores"> ...
Si lo pruebas, vers que el submen se muestra, pero queda siempre visible. Tenemos que ocultarlo (display: none;) cuando el cursor abandone el elemento (onmouseout;) <ul id="menu"> <li><a href="../index.html">Inicio</a></li> <li class="activa" onmouseover="document.getElementById('sub_flores').style.display='blo ck';" onmouseout="document.getElementById('sub_flores').style.display='none ';"> <a <ul id="sub_flores"> ... </ul> </li> ... </ul> href="index.html">Flores</a>
Si lo pruebas, vers que a no ser que lo hagas muy deprisa, al pasar el cursor de la pestaa al submen ste desaparece. Esto se debe a que el men permanece visible siempre que no salgamos de sus elementos (que estn dentro del <li> de la pestaa). Como en los elementos (#menu ul li) tenemos un margen superior de 2px, hace que al pasar sobre l nos quedemos fuera. As que para solucionarlo, ponemos el margen superior a 0 (margin: 0 0 0 -10px;). Para simular el margen, y que haya una pequea separacin entre elementos, aumentamos su alto en 2px (height: 32px; line-height: 32px;).
Bsicamente, podemos escribir el cdigo en la misma pgina o en un archivo independiente: En la pgina HTML: Colocaremos el cdigo en una etiqueta script, normalmente en el <head> de la pgina: <head> <title>Mi pgina</title> <script type="text/javascript"> <!-cdigo javascript; cdigo javascript; --> </script> </head>
A la etiqueta script le acompaa el atributo type, que se refiere al tipo de script utilizado. En caso del JavasScript, el valor debe de ser text/javascript. Observa que hemos encerrado el cdigo en un comentario HTML (<!-- -->). Esto no es necesario y no afecta al script. Lo que hace es indicar al validador que eso no es cdigo HTML, para que no lo evale como tal. Un validador es una aplicacin que analiza el cdigo de una pgina para ver si es vlido con respecto a su Doctype. En un archivo externo. Si tenemos ms de una pgina que utiliza el mismo cdigo, no sera prctico repetirlo en todas. Es mejor guardar el script en un archivo independiente, al que llamaremos desde cada pgina. El archivo no es ms que un archivo de texto, con el cdigo JavasScript, y guardado con la extensin .js. Igual que una hoja de estilo no es ms que un archivo de texto con la extensin .css. Es habitual guardar los archivos JavaScript de nuestro sitio en una carpeta llamada js. Para poder utilizar el cdigo en la pgina, debemos de cargarlo, llamando al archivo con el siguiente cdigo:
Empleamos la misma etiqueta script con el atributo type. Pero esta vez, como en las imgenes, aadimos el atributo src, cuyo valor ser la ubicacin del archivo. En el ejemplo, el archivo nombre_archivo.js, que estara dentro de la carpeta js. Repetiremos esta llamada para cada archivo que queramos cargar.
Y en los eventos correspondientes, llamamos a esas funciones: <ul <li><a <li class="activa" onmouseout="ocultarSubmenu();"> id="menu"> href="../index.html">Inicio</a></li> onmouseover="verSubmenu();"
href="index.html">Flores</a>
Las funciones tienen los siguientes elementos: function nombreDeLaFuncin (param1, param2,..., paramn){ instrucin JavaScript; instrucin JavaScript; ...; } function es una palabra reservada, que indica que a continuacin vamos a definir la funcin. nombreDeLaFuncin, es el nombre que le queramos dar, sin espacios. Se suele escribir en minsculas, y el inicio de cada palabra (excepto la primera) en maysculas. (param1, param2,..., paramn). Entre parntesis ( ), y separados por comas, le podemos pasar a la funcin tantos parmetros como queramos. Los parmetros son valores que damos a la funcin para que los utilice. Por ejemplo, para crear una funcin que calcule el rea de un rectngulo, le deberemos de pasar dos parmetros, el alto y el ancho. Aunque la funcin no necesite parmetros, siempre pondremos los parntesis. Si en nuestro ejemplo tuvisemos varios submens, no crearamos una funcin para cada uno, le pasaramos como parmetro el ID del submen que queramos mostrar. function verSubmenu(id_submenu){
document.getElementById(id_submenu).style.visibility='visible' ; }
Entre llaves { }, estn las instrucciones de la funcin, cada una terminada en punto y coma (;). En las instrucciones podemos utilizar valores constantes, variables ,
operadores , estructuras de programacin , etc... como en cualquier lenguaje de programacin. Si queremos que la funcin devuelva un valor, lo haremos con la palabra reservada return. Por ejemplo, la siguiente funcin convierte de kilmetros a millas:
function return }
conversorKmMillas(km){ km*0.62;
En cdigo JavasScript podemos introducir comentarios. Si son de una lnea, basta con escribir // para que comience el comentario. Si lo queremos ms extenso, podemos utilizar /* para abrir el comentario y */ para cerrarlo. Una vez definida, podemos llamar a nuestra funcin directamente desde un evento (onclick="miFuncion('parmetro');"), utilizando una etiqueta scrit en el body (<script type="text/javascript">miFuncion('prametro');</script>), y
Para abrir una ventana nueva, podemos valernos del objeto window. Este objeto, nos permite crear una ventana, y abrirla con el mtodo open. Un mtodo, es como una funcin que est dentro del objeto. A open, le podemos pasar como parmetro la pgina que queremos abrir. Si, le pasamos una imagen, tambin la abrir. Vamos a probarlo: function verImagen (nombre, imagen){ carpeta = 'fotos/'; window.open(carpeta+imagen); }
Vamos a probarlo con la imagen de la flor de Agret. Lo vamos a hacer en el atributo onclick del enlace, aunque lo podramos haber hecho tambin sobre la miniatura. Lo que s tenemos de quitar es el atributo href del enlace: <a href="#" onclick="verImagen('Agret Oxalis pes-capra',
'agret.jpg');"><img /></a> Si lo pruebas, comprobars que se abre una nueva ventana. Podemos utilizar window.open('url') para abrir cualquier pgina o direccin. Lo que vamos a hacer es, en vez de abrir directamente la imagen, abrir una ventana vaca, y escribir en ella el cdigo que queramos. Dentro de la funcin, escribimos el cdigo a mostrar, con los parmetros. Podemos utilizar una variable, por ejemplo: carpeta codigo = 'fotos/'; = '<html>\n<head>\n<title>'+nombre+'</title>'+ '\n</head>\n<body>\n<h2>'+nombre+'</h2>'+ '\n<img src="'+carpeta+imagen+'" alt="'+nombre+'" title="'+nombre+'" />\n'+ '</body>\n</html>';
Observa que hemos escrito el cdigo de la pgina tal cual, concatenando los parmetros con el signo + donde nos haca falta. Cada cadena viene delimitada por comillas simpes '. No podemos saltar de lnea a mitad de una cadena, debemos de cerrarla en la misma lnea, aunque s podemos concatenar con la lnea siguiente. De todas formas, estos saltos no se vern en el cdigo fuente de la pgina generada. Por eso hemos puesto el carcter de escape
\n, que generar un salto de lnea. Esto es puramente esttico, podramos quitar estos saltos sin que afecten al resultado. Como no slo vamos a abrir la ventana, si no que vamos a utilizar sus mtodos, debemos de asignar la ventana a una variable (por ejemplo, ventana). En vez de abrir la imagen, la abrimos en blanco (window.open()). Una vez abierta, vamos escribimos el cdigo en su documento, utilizando el mtodo write del document de la nueva ventana
(ventana.document.write(codigo)). Podemos escribir varias veces, pero cuando terminemos tenemos que cerrarlo con el mtodo close (ventana.document.close). ventana = ventana.document.write(codigo); ventana.document.close(); window.open();
Si lo pruebas, vers el h2 y el ttulo de la pgina en la ventana del navegador. Ahora slo nos queda complicar un poco ms el cdigo HTML de la pgina generada. Por ejemplo, le podemos adjuntar la hoja de estilo. Adems, despus de la imagen, le vamos a aadir un enlace que cierre le ventana, utilizando el mtodo close de window (window.close();). As nos ha quedado: function verImagen (nombre, imagen){ carpeta='fotos/'; codigo = '<html>\n<head>\n<title>'+nombre+'</title>\n'+ '<link rel="stylesheet" href="../estilo.css" type="text/css" />\n'+ '\n</head>\n<body>\n'+ '<div style="text-align:center;"><h2>'+nombre+'</h2>'+ '\n<img src="'+carpeta+imagen+'" alt="'+nombre+'" title="'+nombre+'" />\n'+ '<p><a href="#" onclick="window.close();">[Cerrar]</a></p>'+ '</div></body>\n</html>'; ventana = window.open(); ventana.document.write(codigo); ventana.document.close(); }
Ahora, slo nos queda cambiar los enlaces de la pgina para que llamen a la funcin. En este apartado hemos utilizado los objetos del navegador window y document. Existen otros objetos del navegador, que puedes ver en este avanzado .
Observa que ponemos ../js porque estamos en la carpeta sitio_flores/flores. En pginas que estn en la raz, como index.html o nosotros.html, pondremos js/funciones.js. Comprueba que funciona.
Realmente nos da igual el valor del parmetro sub, porque lo que haremos es enviar algo cuando estemos en la subcarpeta flores, y cuando no, ni siquiera lo pondremos al llamar a la funcin. Si no lo enviamos, su valor ser null (nulo). Por lo tanto, para saber si estamos en el raz, slo tendremos que preguntar si sub == null. Primero, copiamos el men completo, con el submen, con las rutas como si estuvisemos en el raz. Por ejemplo href="nosotros.html" o href="flores/silvestres.html". Para convertirlo a cadena de texto, encerramos cada lnea entre comillas simples ' ', aadiendo al final de cada una un salto de lnea (\n). Al final de cada una, excepto de la ltima, concatenamos con la siguiente (+). Todo eso, lo pasamos como parmetro a al mtodo document.write(). document.write('<ul id="menu">\n'+ '<li>...</li>\n'+ '<li>...</li>\n'+ ... '<li>...</li>\n'+ '</ul>');
Todo el men forma una cadena. Lo que vamos a hacer, es ir concatenando un valor u otro dependiendo de los aprmetros. Para ello, vamos a utilizar la forma reducida de la sentencia If: variable = (condicin) ? valor_si_se_cumple : valor_si_no;
Por una parte la clase. Para cada pgina, evaluaremos la variable pagina, y si es la pgina, concatenaremos la clase activa, si no, no. Por ejemplo, para la pestaa nosotros pondremos: '<li'+((pagina=='nosotros') ? ' class="activa"':'')+'>...\n'+
Esto quiere decir, que entre <li y >, aadiremos class="activa" (con un espacio delante) si la pgina es nosotros. Si no, no aadimos nada, lo que expresamos con una cadena vaca (abrir y cerrar comillas). Esto, lo hacemos para cada pestaa. Pero con dos excepciones. Como tenemos dos pginas index, tenemos que poner algo ms para que no se marquen las dos como activa. Podemos comprobar el parmetro sub. Si estamos en la pgina inicial del sitio, en la pestaa Inicio, no habremos pasado el parmetro, por lo que sub ser null. Aadimos esta condicin: '<li'+((pagina=='index'&&sub==null) ? href="index.html">Inicio</a></li>\n'+ ' class="activa"':'')+'><a
El otro caso es la pestaa Flores. Ser la pestaa activa cuando estemos en cualquiera de las pginas de flores, es decir, siempre que sub no sea null. '<li'+((sub!=null) ? ' class="activa"':'')+' onmouseover="verSubmenu();" onmouseout="ocultarSubmenu();"><a href="flores/index.html">Flores</a>\n'+
Por otro lado, como los enlaces son relativos a la pgina, tenemos que cambiarlo dependiendo de si estamos en la subcarpeta o no. Si lo estamos, es decir, si sub tiene algo, o lo que es lo mismo, si sub no es nulo (sub!=null), tenemos que subir todos los enlaces una carpeta, aadiendo a la direccin del enlace (href), al principio, ../. Por ejemplo: <a href="'+((sub!=null) ? '../':'')+'index.html">Inicio</a>
La funcin completa, nos ha quedado as: function cargarMenu(pagina, sub) { document.write('<ul id="menu">\n'+ '<li'+((pagina=='index'&&sub==null) ? ' class="activa"':'')+'><a href="'+((sub!=null) ? '../':'')+'index.html">Inicio</a></li>\n'+ '<li'+((sub!=null) ? ' class="activa"':'')+' onmouseover="verSubmenu();" onmouseout="ocultarSubmenu();"><a href="'+((sub==null) ? '../':'')+'flores/index.html">Flores</a>\n'+ '<ul id="sub_flores">\n'+ '<li'+((pagina=='exoticas') ? ' class="activa"':'')+'><a href="'+((sub==null) ? '../':'')+'flores/exoticas.html">Exóticas</a></li>\n'+ '<li'+((pagina=='ornamentales') ? ' class="activa"':'')+'><a href="'+((sub==null) ? '../':'')+'flores/ornamentales.html">Ornamentales</a></li>\n'+
'<li'+((pagina=='plantas') ? ' class="activa"':'')+'><a href="'+((sub==null) ? '../':'')+'flores/plantas.html">Plantas</a></li>\n'+ '<li'+((pagina=='silvestres') ? ' class="activa"':'')+'><a href="'+((sub==null) ? '../':'')+'flores/silvestres.html">Silvestres</a></li>\n'+ '</ul>\n'+ '</li>\n'+ '<li'+((pagina=='nosotros') ? ' class="activa"':'')+'><a href="'+((sub!=null) ? '../':'')+'nosotros.html">Nosotros</a></li>\n'+ '<li'+((pagina=='contacto') ? ' class="activa"':'')+'><a href="'+((sub!=null) ? '../':'')+'contacto.html">Contacto</a></li>\n'+ '<li'+((pagina=='noticias') ? ' class="activa"':'')+'><a href="'+((sub!=null) ? '../':'')+'noticias.html">Noticias</a></li>\n'+ '</ul>\n'); }
Ahora, en la pgina HTML, quitamos el <ul> del men, y en su lugar, llamamos a nuestra funcin con el siguiente cdigo: <script 'S');</script> type="text/javascript">cargarMenu('silvestres',
En este caso, estamos en la pgina silvestres.html, por lo que mandamos silvestres como pagina. Como parmetro sub, hemos enviamos S, pero podramos haber puesto cualquier cosa. Lo importante es que no sea nulo. Cuando estemos en una pgina del raz, slo enviamos la pgina, por ejemplo <script type="text/javascript">cargarMenu('nosotros');</script>. Cambia el men en cada pgina. Recuerda que tambin hay que poner la llamada al archivo js/funciones.js.
Si slo utilizamos scripts para conseguir algunos efectos visuales, no hay problema. Pero en nuestra pgina, si no se muestra JavaScript el visitante no podr navegar, porque no se mostrar el men, ni se vern las fotografas grandes. De hecho, si has probado la pgina en Internet Explorer, vers que se muestra el siguiente aviso:
Tenemos que hacer clic sobre l para habilitar el contenido bloqueado, y mientras no lo hagamos no se muestra el men. Tambin puedes comprobarlo deshabilitando JavaScript en Firefox (men Herramientas Opciones... Contenido Activar JavaScript). Si lo desactivas, recuerda volver a activarlo despus siguiendo los mismos pasos. Esto no tiene solucin, tendramos que prescindir de JavaScript. Lo que s podemos hacer es mostrar un contenido alternativo a los usuarios con JavaScript deshabilitado. Para hacerlo, podemos utilizar la etiqueta <noscript></noscript>. El contenido de esta etiqueta, slo se mostrar cuando los scripts estn deshabilitados. Aqu podemos poner enlaces alternativos, en nuestro ejemplo enlaces a las principlaes secciones, lo justo para poder navegar. Esta realmente sera la opcin ms adecuada, ya que con nuestro men actual, los navegadores no podrn indexar correctamente nuestro sitio, y eso es fundalmental para una pgina web. Veremos ms sobre este tema en la ltima unidad. Por no complicarlo ms, vamos a mostrar simplemente mostrar un aviso, indicando que nuestro sitio requiere JavaScript para poder navegar por l. Por ejemplo, en nuestro sitio hemos puesto: <script type="text/javascript">cargarMenu('index');</script> <noscript> <div class="sinscript">Atención: Necesitas habilitar JavaScript para </noscript> poder navegar por este sitio.</div>
Y hemos definido un estilo para div.sinscript. Hemos tenido que crear una clase, porque Internet Explorer no reconoce el selector noscript div. Con los cambios realizados en esta unidad, nuestro sitio de ejemplo nos ha quedado as.
Hemos visto como crear una pgina web, darle formato y aadirle funcionalidades con JavaScript, pero esto es slo el comienzo. Una pgina web puede hacer muchas ms cosas, puede mostrar los datos que obtiene es ese instante de una Base de Datos que reside en un servidor de Internet, puede comunicarse con otras webs, puede utilizar mapas, informacin del tiempo, etc. En definitiva, una pgina web puede mostrar informacin actualizada cada vez que se ejecuta. Es lo que se conoce como pginas dinmicas, en contraposicin a las pginas estticas, que siempre muestran la misma informacin. Un ejemplo de pgina dinmica sera un foro de Internet, como el que hay en aulaClic. Esta pgina que ests leyendo sera un ejemplo de pgina esttica. Para crear pginas dinmicas hay que emplear un lenguaje de programacin web, como Java, .NET, o PHP. Si quieres ver las diferencias entre estos lenguajes visita este tema avanzado .
Nosotros hemos elegido PHP por ser gratuito y fcil de aprender. Para explicar PHP necesitaramos un curso completo, as que slo vamos a dar las nociones bsicas para que puedas empezar a programar en PHP.
11.2. Formularios
En nuestro ejemplo tenemos una pgina de Contacto que recoge datos mediante un formulario y los enva a una direccin de correo electrnico. Para enviar dicho correo electrnico vamos a utilizar PHP. Hay varias formas de recoger datos y enviar un correo, nosotros vamos a emplear la ms didctica utilizando dos pginas. Luego en un ejercicio la mejoraremos (con una sola pgina). Necesitamos una primera pgina escrita en HTML que contiene el formulario para recoger los datos y llamar a una segunda pgina escrita en PHP que realiza el envo del correo. A continuacin te mostramos el cdigo de la primera pgina que se llamar contacto.htm. <html><head></head><body> <form method="post" action="enviar_mail.php"> <table style="text-align: rules="rows"> <tbody> <tr> <td>Nombre:</td> <td><input type="text" name="nombre" id="nombre" /></td> </tr> <tr> <td>Correo electrnico:</td> <td><input type="text" name="email1" id="email1" /></td> </tr> <tr> <td>Repite tu correo:</td> <td><input type="text" name="email2" id="email2" /></td> </tr> <tr> <td>Cmo nos conociste?:</td> left; width: 100%;" cellpadding="3"
<td><select name="conocio" id="conocio"> <option selected="selected"></option> <option>Un amigo</option> <option>Un blog</option> <option>Un buscador</option> <option>Otros</option> </select></td> </tr> <tr> <td>Tu pregunta es referente a:</td> <td><label><input value="web" /> type="radio" name="referente" id="ref_web"
Las fotos </label><br /> <label><input type="radio" name="referente" id="ref_asociacion" value="asociacion" /> La asocioación </label></td> </tr> <tr> <td colspan="2">Escribe lo que quieres preguntarnos:</td> </tr> <tr> <td class="centrado" colspan="2"> <textarea cols="50" rows="5" name="consulta"></textarea></td> </tr> <tr> <td class="centrado" value="Enviar" /> colspan="2"><input type="submit"
</body></html>
El primer paso es recoger los datos. Para ello, hemos empleado un formulario, con una serie de controles, con los que interacta el usuario. Un formulario, est delimitado por la etiqueta <form></form>. Como mnimo, suele tener dos atributos, propios del formulario: method: es la manera en la que se enviarn los datos. Sus valores pueden ser get, que muestra los datos en la barra de direcciones, o post, que los enva de forma separada. action: como valor, contiene a dnde se enviarn los datos. En nuestro caso, sera una pgina PHP (action="enviar_mail.php"). Dentro del formulario, podemos tener cualquier elemento, como prrafos o tablas para organizar los controles. Entre los controles podemos encontrar: Cajas de texto de una lnea, con la etiqueta <inputtype="text" /> Cajas de texto multilnea, con la etiqueta <textarea></textarea> Casillas de verificacin, con la etiqueta <input type="checkbox" /> Casillas de opcin, con la etiqueta <input type="radio" /> Opcin B. . . Opcin A
Men de opciones, con la etiqueta <select><option></option>...</select> . Botones, con la etiqueta <input type="submit"> o la etiqueta <button>Enviar. Los controles que recogen datos, llevan adems el atributo name con el nombre que le queramos dar al control. Es importante, porque al recoger los datos, nos referiremos al control por su nombre. Tambin es indispensable el botn, ya que al pulsarlo, enva la pgina al action del formulario.
Para ver en detalle estos controles y conocer alguno ms, puedes seguir este avanzado . Si necesitas ayuda para crear la pgina nosotros.htrml, puedes seguir el ejercicio paso a paso Crear un formulario. Puedes ver el aspecto final del formulario aqu.
//si no se ha recibido, le asigna un valor vaco. $email1 $email2 variable $consulta $nombre $conocio = recogeDato('email1'); = recogeDato('email2'); //asignamos cada valor a una = recogeDato('consulta'); = recogeDato('nombre'); = recogeDato('conocio');
//una vez recogidos, los validamos (campos obligatorios, etc...) if($email1==''){ //validamos los que el email no est vacio $algunerror mensaje = TRUE; //si encontramos un error,mostramos un
//si
tiene
algo,
que
concida
con
la
eMails
introducidos
no
if($nombre==''){ //comprobamos que el nombre no haya quedado vaco $algunerror = TRUE; echo "<p class=\"erroneo\">No has introducido tu nombre.</p>\n"; } if($consulta==''){ //comprobamos que el contenido de la pregunta no est vaco $algunerror = TRUE; echo "<p class=\"erroneo\">El quedar en blanco.</p>\n"; } if ($algunerror){ //comprobamos si ha habido algn error echo "<p> </p>\n"; //si los hay, se lo indicamos al usuario echo "<p>No se ha podido enviar el mensaje por los errores que se detallan arriba.</p>\n"; echo "<p>Por favor, vuelve a rellenar el formulario.</p>\n"; echo "<p class=\"centrado\"><a href=\"contacto.html\">Volver al formulario</a></p>\n"; }else{ $para="ejemplo.aulaclic@gmail.com"; enviamos el correo //si todo es correcto, rea de la consulta no puede
$asunto="Contacto web Flores - consulta sobre ".$referente; $mensaje="Datos del mensaje con los datos formulario de contacto:\n". //creamos el
"Nos conocio por: ".$conocio." \n". "Pregunta: ".$consulta; mail($para, $asunto, $mensaje); //y lo enviamos echo "<p>Tu mensaje se ha enviado correctamente. Gracias por contactar con nosotros.</p>\n"; echo "<p>Nos pondremos en contacto lo antes posible.</p>\n"; }
?>
Al contrario de lo que ocurra con JavaScript, el navegador no puede interpretar el cdigo PHP. Esto quiere decir que si abrimos una pgina PHP en nuestro equipo, no se ejecutar el cdigo. El cdigo PHP, debe de ser interpretado por un servidor, as que para poder verlo, tenemos que ver la pgina a travs de un servidor. Tenemos dos opciones, o convertir nuestro equipo en un servidor, instalando por ejemplo el paquete WAMP, como se explica el curso de Dreamweaver CS4, en www.aulaclic.es, o podemos subir la pgina a un servidor Web. Para ello, podemos emplear un servidor de pago o uno gratuito. Lo malo de los gratuitos, como veremos en el ltimo tema, es que la mayora no te deja enviar eMails. Y lgicamente, para probar este ejemplo, no compensa contratar uno de pago. Seguramente, en el cdigo que hemos mostrado, has reconocido algunas estructuras, como los if. La mayora de estructuras de control de PHP (condiciones, bucles...) funcionan igual que en JavaScript. Incluso puedes ver que al principio hemos declarado una funcin tal y como lo hacamos en JavaScript. Puedes comprobar las semejanzas con este avanzado sobre las variables en PHP y ste sobre las estructuras de control en PHP .
Qu es una pgina PHP? Realmente, una pgina PHP no es ms que un archivo de texto con la extensin .php. En esa pgina, hay cdigo PHP y HTML. De hecho, podemos cambiar la extensin de una pgina HTML a PHP y se vera igual. Lo que hace el cdigo PHP es generar el cdigo fuente de la pgina final. Por ejemplo, con una condicin, decidimos si escribir un cdigo u otro. Para que el servidor interprete el cdigo PHP, este debe de ir entre las marcas <?php y ?> Por ejemplo, la estructura de una pgina PHP podra ser: <html> <head> <title>Pgina PHP</title> ...Cdigo HTML... <?php ...cdigo PHP... ?> </head> <body>
...Cdigo HTML ... <?php ...cdigo PHP... ...cdigo PHP... ...cdigo PHP... ?> ...cdigo HTML ... <?php ...cdigo PHP...
Aunque no tiene por qu tener HTML. Por ejemplo, podemos tener una pgina con todas las funciones que utiliza nuestro sitio. Para incluir una pgina dentro de otra, podemos empelar la instruccin include("pagina.php");. Cuando consultemos la pgina PHP en el servidor, al navegador no le llega el cdigo PHP, le llega slo el HTML generado por el PHP.
$email = $_REQUEST['email'];
Esto funciona mientras exista el campo email. Pero si no existe, da un error, por ejemplo, si ponemos el nombre de un checkbox, ya que estos controles slo se envan si estn marcados. Por eso, primero tenemos que confirmar si existe la variable. Para eso, tenemos la funcin isset(variable). Esta funcin, devuelve verdadero si existe la variable que le pasmos, y falso si no. La idea es comprobar si existe en $_REQUEST el campo que nos interesa. Si existe, tomamos su valor, y si no, le asignamos uno, aunque sea vaco (""). As no nos dar error. Por lo tanto, podemos recoger el valor as: $email = (isset($_REQUEST['email'])) ? $_REQUEST['email']) : "";
Observa que empleamos la estructura variable = (condicin) ? "valor si se cumple" : "valor si no"; que ya vimos en JavaScript. isset es una de las muchas funciones predefinidas en PHP. Puedes ver algunas muy tiles en este avanzado .
Como tenemos que repetir esto para cara campo del formulario, podemos crear una funcin: function recogeDato($campo) { return (isset($_REQUEST[$campo])) ? $_REQUEST[$campo]) : ""; }
$email = recogeDato('email');
De esta manera, nos aseguramos de que no se produzcan errores, aunque los datos que intentemos recoger no existan. Siguiendo esto, guardamos todos los datos en variables con nombres descriptivos. El paso siguiente es comprobar que los valores sean correctos. Por ejemplo, comprobar que si un campo era requerido no haya quedado vaco: if ($campo==""){
Dependiendo de la finalidad de los datos, se pueden hacer comprobaciones ms o menos complejas. Por ejemplo, que un nmero est en un rango, que un email tenga formato vlido, o que un dato que se guardar en una base de datos, no contenga cdigo malicioso. Una vez comprobados todos los datos, si son correctos, continuamos con la ejecucin de la pgina. En nuestro ejemplo, slo es enviar un correo, pero podra ser guardar un registro en una base de datos, confirmar una compra, etc. En caso de que haya errores, lo normal es volver a pedir los datos al usuario. En este caso, sera una ventaja tener tambin el formulario en un archivo PHP, ya que podramos marcar directamente los campos errneos, y podemos mostrar al usuario los datos introducidos para que slo tenga que corregirlos y no volver a introducirlos. Con lo que hemos visto, ya podemos crear la pgina de envo, con el ejercicio paso a paso Recoger datos y enviar un correo. Para el usuario, resulta molesto tener que enviar el formulario para que se compruebe en el servidor, que se le devuelva con errores, y tener que corregirlos o volver a rellenarlo. Por eso, es una buena idea validarlo primero con JavaScrit antes de enviarlo, como explicamos en este avanzado .
En vez de tener el formulario y el PHP en pginas separadas, vamos a unirlos en una pgina con el ejercicio paso a paso Formulario en PHP. Esto nos permitir hacer muchas ms cosas con el formulario. Con todos estos cambios, nuestro sitio web ha quedado as. Si ests viendo este curso en tu equipo, comprobars que no se ve bien, ya que vemos el cdigo fuente PHP. Puedes ver cmo quedara en un servidor capaz de ejecutar el PHP si lo ves en la web de aulaClic, pulsando aqu.
Para nuestro sitio de ejemplo, hemos visto un uso muy sencillo y reducido del PHP. Pero este lenguaje ofrece posibilidades muy potentes, sobre todo combinado con bases de datos, lo que nos permite crear pginas realmente dinmicas: foros, blogs, tiendas on-line, buscadores, etc... Si no sabes qu es una base de datos, consulta este bsico .
Imaginemos lo que supondra incluir una base de datos en nuestro sitio de ejemplo. Lo que ms tiempo nos ha llevado ha sido lo relacionado con las fotografas de las flores, porque tenemos bastantes. Por una parte, las galeras, que hemos tenido que crear a mano, con el riesgo de haber puesto algn ID mal, y que el enlace desde la tabla de ndice no funcione. Y por otra parte la tabla de enlaces, que adems est ordenada alfabticamente. Si ahora queremos aadir una nueva flor, tenemos que hacerlo en la posicin que le corresponde. Como las filas alternan color de fondo, al aadir una, tendramos que cambiar los colores de todas las filas siguientes. Eso es mucho trabajo. Y si imaginamos que la pgina tiene miles de fotos, ya dems los usuarios quieren subir fotos nuevas a diario, hacerlo a mano sera sencillamente imposible. En cambio, podramos crear una base de datos, con una tabla que tenga cuatro campos: nombre de la flor, nombre cientfico, categora y nombre del archivo de imagen. Ahora, para crear las fichas de las flores, no tenemos ms que hacer una funcin PHP que cree la ficha de una flor, y repetirla en un bucle que cree fichas para todos los registros de la base de datos. Lo mismo para la tabla de ndice, solo habra que hacer una consulta que nos devuelva las flores ordenadas por nombre, y crear un bucle que muestre un registro en cada fila. Adems, no necesitaramos una pgina distinta para cada categora. Bastara con consultar en la base de datos slo las flores de una determinada categora. Adems nos permite aadir funcionalidades a nuestra web, como un buscador, guardar datos sobre las imgenes ms vistas, o que los usuarios puedan subir sus propias imgenes, ya que podemos permitir aadir y editar registros desde un sencillo formulario en la web. PHP utiliza principalmente MySQL y SQLite como sistemas de gestin de bases de datos. Utilizarlos resulta sencillo, ya que las funciones que nos permiten utilizar las bases de datos ya estn definidas en PHP. Adems, es Internet podemos encontrar un sinfn de ejemplos y ayudas.
12.1. APIs
Aunque si combinamos HTML, JavaScript y PHP podemos hacer muchas cosas con nuestras pginas, existen an otras fuentes de datos que residen fuera de nuestra pgina y que podemos incorporar a nuestra web mediante las APIs. Para aadir funcionalidades complejas a nuestra pgina web o para acceder a informacin, podemos comunicarnos con otro software, ofrecido por sitios web especializados, utilizando una Interfaz de Programacin de Aplicaciones (API). Lo que nos ofrece una API es una serie de procedimientos para acceder e interactuar con aplicaciones o datos realizadas por terceros. Es decir, en vez de desarrollar esas funciones con un lenguaje de programacin y almacenarlas en nuestro sitio, creamos una "ventana", a travs de la cual mostramos esa aplicacin. Adems, nos ofrece una serie de funciones, normalmente en JavaScript con las que podemos interactuar con esa ventana.
Internet nos ofrece una gran cantidad de aadidos que nos permiten ampliar la funcionalidad de nuestras pginas, muchos de ellos sin necesidad de tener demasiados conocimientos de programacin ni de HTML. Podemos encontrar desde sitios que nos ofrecen un cdigo fuente listo para copiar y pegar en nuestra web, hasta otros con APIs ms avanzadas, que nos permiten una gran personalizacin de la aplicacin. Por ejemplo, si tenemos una cuenta en Photoshop On-line, podemos aadir diapositivas de nuestras imgenes, slo copiando y pegando el cdigo que nos proporcionan:
O si hemos creado una presentacin desde Google Docs, podemos incrustarla (embeberla) en nuestra pgina. Estos son slo unos pocos ejemplos, pero hay una gran cantidad de sitios web que nos permiten utilizar sus datos. Normalmente, estos sitios nos ofrecen un fragmento de cdigo includos en etiquetas <objet>, <embed> o <iframe>. Existen multitud de APIs con diferentes objetivos, por ejemplo, Flickr y Panoramio para usar sus amplios catlogos de imgenes, Google Maps para usar mapas de cualquier rincn del mundo, Digg y Meneame para comentarios y noticias, etc. Estas y otras APIs se pueden utilizar para aadir ciertas funcionalidades a nuestra web, pero es tal la cantidad y calidad de APIS, que existen sitios web que se basan nicamente en las funciones y datos suministrados por las APIs y que son conocidas como "Mashup" o aplicaciones hbridas. Hay listas de las mejores Mashup. Nota: Al utilizar APIs o aplicaciones de terceros, es importante leer las condiciones de uso. Ya que muchas imponen algunas restricciones para uso comercial, o exigen ciertas condiciones de uso, como enlaces a la pgina propietaria de los datos.
Para aadir el mapa, solo hemos de ir a http://maps.google.es/ y buscar la direccin que queramos. Cuando la tengamos, pulsamos Enlazar, y nos aparece una ventana con dos tipos de enlace:
Seleccionamos el contenido de Pegar HTML para insertar en un sitio web, lo copiamos y lo pegamos en el prrafo que habamos reservado. Por ejemplo, ste es un mapa de la zona del puerto de Valencia, en Espaa. Puedes hacer zoom, moverlo, etc, tal y como si estuvieras en Google Maps.
Esta es la forma ms simple de utilizar Google Maps, en la que simplemente mostramos una direccin. Pero podemos ofrecer una versin ms avanzada, en la que los usuarios puedan, por ejemplo, buscar direcciones, o utilizar todas las opciones de Google Maps. En este caso, encontramos ms opciones a travs de la API de Google Maps.
Por ejemplo, en la ltima pestaa que nos queda, vamos a incluir noticias relacionadas con el medio ambiente desde la web de elPais.com, mostrando la informacin de su feed RSS. Como siempre, basndonos en la pgina base.html, creamos la pgina noticias.html, poniendo Noticias como texto del h2. Buscamos el icono , que en la web de el Pas se encuentra al pie de la pgina. Al
pulsar, concretamente esta web nos permite elegir la categora que queramos, en nuestro caso Medio ambiente.
Al pulsar, podemos elegir el lector que queremos utilizar. En nuestro caso, no vamos a emplear un lector, vamos a incluir el cdigo en nuestra pgina, por lo que elegimos En su propia pgina. A continuacin deberemos rellenar un pequeo formulario. En la siguiente ventana, elPais.com nos ofrece la posibilidad de personalizar nuestro estilo. As que elegimos uno que se integre bien con nuestro diseo. Cuando lo tengamos, pulsamos Enviar cdigo.
Se mostrar el cdigo generado y adems se nos enviar por correo. Lo nico que tenemos que hacer es copiar todo lo referente al estilo en el head de nuestra pgina, y el resto en el lugar donde queremos que se muestren las noticias (tambin funciona si incluimos todo el cdigo junto dentro del body, aunque es menos correcto). Lo ms interesante del RSS es el caso contrario. Es decir, dar al usuario la posibilidad de suscribirse al feed RSS de nuestra pgina, en vez de mostrar informacin de otros feeds RSS. En nuestro ejemplo, no tendra demasiado sentido, ya que no hemos diseado un sitio dinmico. Pero vamos a crear un feed RSS donde iremos mostrando las fotos de flores que vayamos subiendo. Lo nico que tenemos que hacer es crear un archivo XML con el formato apropiado. Recuerda que XML es un lenguaje de etiquetas, muy similar al XHTML, pero omitiendo cualquier atributo de estilo. Podemos crear un archivo con la siguiente estructura: <?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Fotos de flores en Floramics</title> <link>http://www.aulaclic.es/paginasweb/sitio_flores/</link> <description>Nuevas fotos subidas a Floramics</description> <language>es-Es</language> <item> <title>Agret - Oxalis pes-caprae</title> <guid isPermaLink="true">http://www.aulaclic.es/paginasweb/sitio_flores/flo res/silvestres.html#agret</guid> <pubDate>Wed, 25 Nov 2009 10:00:00 +0200</pubDate> <description>Foto tomada en los Jardines de la Universidad.</description> </item> <item> <title>Amapola Papaver rhoeas</title> <guid isPermaLink="true">http://www.aulaclic.es/paginasweb/sitio_flores/flo res/silvestres.html#amapola</guid> <pubDate>Tue, 24 Nov 2009 10:05:00 +0200</pubDate> <description>Algunas amapolas en un campo de trigo.</description> </item> </channel> </rss>
Observa que hemos encerrado todo el contenido del documento entre las etiquetas <rss><channel></channel></rss>. Seguidamente, hemos indicado el ttulo (<title>), el enlace al sitio (<link>) que debes de cambiar por el de tu pgina, una descripcin (<description>) y el idioma (<languaje>). Cada elemento (en nuestro caso es la foto de una flor, pero podra ser un artculo, una noticia, etc...) est marcada por la etiqueta (<item></item>). Dentro, hemos puesto el ttulo (<title>), el link del elemento (<guid>), la fecha de publicacin (<pubDate>), y una descripcin <description>. Este archivo lo hemos guardado como flores_floramics.xml. Puedes verlo aqu. Te recomendamos que lo veas con Firefox, ya que es capaz de interpretar y formatear estos archivos. Lo nico que tenemos que hacer ahora, es aadir en nuestra pgina (normalmente al pie) un enlace al archivo. Estos enlaces se marcan con unos iconos estndares, siendo el ms habitual .
Aplicando a nuestro sitio lo que hemos visto, al final nos ha quedado as.
Hay varios tipos de aplicaciones CMS, nosotros los vamos a clasificar en las siguientes categoras: Portales, blogs, foros, wikis, educativas y comercios.
Portales. Los CMS ms genuinos son los de tipo portal que incluyen un sistema para presentar noticias y contenidos que pueden ser generados por los gestores o por los usuarios, tambin incluyen un sistema de comentarios a las noticias, foros de discusin, votaciones, descargas, etc. Incorporan funciones para gestionar las altas y bajas de usuarios. Ejemplos de este tipo de CMS son PHP-Nuke, Joomla y Drupal. PHP-Nuke es uno de los CMS pioneros, con gran cantidad de instalaciones y una amplia variedad de funciones. Hay gran cantidad de funciones extras creadas por los usuarios a lo largo de sus muchos aos de vida. Requiere PHP y MySQL. Originalmente era totalmente gratuito, ahora sigue siendo gratuito pero para obtener la versin ms reciente hay que pagar un poco. Joomla y Drupal son CMS ms modernos, de diseo ms actual. Blogs. Un Blog (abreviacin de weblog) es una pgina web que contiene una serie de textos o artculos escritos por uno o ms autores recopilados cronolgicamente. Normalmente el ms actual se coloca en primer plano. Su temtica es muy variada. Abundan muchsimo los blogs personales, pero tambin podemos encontrar otros en formato periodstico como periodistas21, o tambin en gnero literario como mujergorda, que ha conseguido pasar de la pantalla al libro.
Podemos encontrar temas especficos como en microsiervos, un blog dedicado a la tecnologa e Internet, o incluso blogs que hablan sobre blogs como bitacoras.org. Lo que est claro es que es un modo de comunicarse que est generando diarios en masa. A fecha de hoy los gigantes de Internet se han subido al carro y estn aprovechando el tirn para atraer ms trfico hacia sus sitios. De esta forma Google tiene a Blogger, un servicio gratuito que ofrece espacio ilimitado para que sus usuarios puedan escribir sus bitcoras de una forma sencilla y cada vez ms dinmica. MSN present hace un tiempo MSN Spaces donde cualquier poseedor de una cuenta Hotmail puede acceder a la posibilidad gratuita de un espacio para fotografas y bitcora en Internet. Este servicio ha sido muy bien acogido debido a la integracin del servicio con el programa de mensajera MSN Messenger. Junto a estas apuestas gratuitas de los grandes de Internet an sobreviven (y mejor que bien) las alternativas que convivieron con el nacimiento de Blogger (cuando an no perteneca a Google y era una empresa independiente): Livejournal y Bitacoras.com. Ambas propuestas (y las anteriores) ofrecen espacio gratuito y funcionalidades varias que permiten comentarios a cada entrada y subida de fotografas para enriquecer el texto del diario.
Una herramienta muy socorrida a la hora de consultar tanta informacin son los Buscadores de Blogs. Technorati es un buscador muy utilizado y consolidado en este terreno. Estos son algunos de los blogs que te puedes instalar: WordPress, con traduccin al espaol. Prubalo aqu. Movable Type TextPattern. Prubalo aqu. LifeType. Prubalo aqu.
visitan el foro para hacer preguntas y contestar alguna pregunta de vez en cuando. Tambin hay algunos usuarios gamberros o "troles" que solo quieren divertirse y molestar. Otro tipo de usuario conocido como "spamer" slo busca hacer publicidad. Para controlar todo esto es necesario que existan moderadores con capacidad de borrar mensajes y bloquear usuarios. Millones de personas han encontrado solucin a sus pequeos o grandes problemas a travs de los foros y sera bueno que el espritu de "echar una mano" a los dems se mantuviera por muchos aos. Educativas. Los CMS educativos o formativos son sistemas on-line de aprendizaje que simulan un aula virtual. Constan de contenidos, profesores y alumnos. Los profesores crean los contenidos y responden a las preguntas de los alumnos. Tambin se pueden realizar exmenes.
Es sorprendente la cantidad de posibilidades para la enseanza que proporcionan estos sistemas, con muy poca inversin y conocimientos informticos se puede crear un eficiente centro educativo virtual que puede ser usado por miles de alumnos. Son usados por profesores como apoyo a sus clases presenciales, por educadores de pases en vas de desarrollo para ofrecer educacin gratuita, por profesionales que quieren dedicarse a la enseanza por Internet, etc. El ms usado es Moodle originario de Australia pero que cuenta con versiones en diferentes idiomas, entre ellas el espaol, requiere PHP y admite las bases de datos ms populares (MySQL, Postgree, ... ) Otros ejemplos son: Dokeos, WebCT y Blackboard. Wikis.
Wiki es un sistema colaborativo de edicin y publicacin de contenidos web, de tal forma, que los usuarios registrados pueden crear o modificar la informacin de una pgina web sin saber HTML. La enciclopedia Wikipedia es el ejemplo ms conocido de un Wiki. Hay varios sistemas wiki, (MediaWiki, TikiWiki, ... ) pero todos tiene unas caractersticas comunes, entre ellas, la fcil edicin a travs del navegador web y la existencia de un "historial" de cada pgina que permiten al moderador deshacer los cambios realizados por los usuarios hasta una versin del historial. Comercios. Los CMS de comercio electrnico permiten crear una tienda virtual en muy poco tiempo y con multitud de funciones. Unos de los ms conocidos son Magento, PrestaShop y eCommerce. Una vez instalado uno de estos CMS permite crear un catlogo con los productos de la tienda, incluida una foto, e implementar un "carrito de compra" con los sistemas de pago ms habituales (contra reembolso, transferencia, tarjeta, PayPal, etc, ...).
framework. Para proyectos medianos o grandes en los que participan varias personas y con crecimiento previsto, si es interesante emplear un framework. No hay una definicin de cmo tiene que ser un framework, as que no todos son iguales y tienen ms o menos funciones implementadas. Por esto es conveniente hacer una comparativa para elegir el que mejor se adapte a nuestro caso particular teniendo en cuenta, aparte del propio framework, la seriedad de la comunidad que tienen detrs, la documentacin, los ejemplos de cdigo, etc.
12.6. AJAX
En el tema 10 vimos una introduccin al lenguaje JavaScript que permite dotar de ms dinamismo a las pginas web, AJAX es un paso ms en este sentido que conviene conocer.
AJAX es un acrnimo para Asynchronous JavaScript And XML (JavaScript Asncrono y XML). Con AJAX seremos capaces de crear sitios web que se ejecuten directamente en el navegador del usuario manteniendo una comunicacin con el servidor siempre que sea necesario pero sin recargar la pgina que estamos visualizando, simplemente se realizarn cambios sobre ella. Esto significa que la velocidad de interaccin con la aplicacin aumenta de forma significativa al reducir el nmero de peticiones que se hacen al servidor. Y an as, la comunicacin que se realiza entre el navegador y el servidor se realiza de forma asncrona y en segundo plano, por lo que es completamente transparente para el usuario. Gran parte del mrito de la integracin y rpida aceptacin que ha tenido la llamada Web 2.0 se debe a AJAX. Uno de los primeros en usar AJAX fue Google Maps que rpidamente se gan un punto al crear una interfaz rpida, accesible e interactiva.
AJAX no constituye una tecnologa en s, sino que combina mediante JavaScript, tres tecnologas ya existentes: XHTML y hojas de estilos (CSS) para el diseo que formatea la informacin. Document Object Model (DOM) que es el encargado de interactuar con la informacin presentada y es el que se ejecuta en el cliente (navegador), y XMLHttpRequest, que es un objeto encargado de intercambiar datos con el servidor web. Estos datos son devueltos en formato XML y se aaden a la pgina que estamos visualizando integrndose de nuevo gracias a XHTML y CSS. Uniendo estas tecnologas, las interfaces, es decir, la forma en la que el usuario ve o trabaja con una pgina web, se han revolucionado. De hecho, estn surgiendo nuevos portales o pginas de inicio que permiten su configuracin completamente. De forma que el usuario al abrir una ventana del navegador vea todo el contenido que le interesa en una sola ventana. Ejemplos de estas iniciativas son la pgina de inicio personalizada de Google, Live.com de Microsoft o la iniciativa de Netvibes.com muy bien orientada al pblico hispanohablante. La nica desventaja que presenta AJAX es que utiliza JavaScript como lenguaje en la parte del navegador para acceder al DOM. Aunque para utilizar AJAX no sea necesario ningn tipo de plug-in en el cliente, s es necesario tener activado JavaScript. En resumen, AJAX supone un avance en la interaccin del usuario con la web adems de un uso real de JavaScript que hasta ahora se encontraba explotado de forma muy pobre.
Frameworks para distintos lenguajes: Lista de Framework MVC para PHP CakePHP Zend para PHP Struts para Java Springs para Java Ruby on Rails JQuery, para JavaScript Masup: programmableweb Las mejores APIs disponibles. Aqu encontrars una lista con las APIS ms conocidas.
Una vez tenemos terminada nuestra pgina web slo queda publicarla en Internet para hacerla accesible a los millones de internautas de todo el mundo. Hoy en da nos parece normal que cualquier persona del planeta pueda ver nuestras pginas web en Internet pero hasta la dcada de 1990 a nadie se le hubiera ocurrido soar que sera tan fcil y tan barato poder comunicarse con tanta gente. Bsicamente para publicar hace falta tener acceso a un servidor de Internet y disponer de una forma de subir los archivos al servidor. Tambin es conveniente saber lo que es un dominio de Internet y cmo hacer que nuestra pgina sea encontrada por los buscadores. Tambin podemos publicar en un servidor local instalado en nuestro ordenador, de esta forma podremos probar las pginas dinmicas sin subirlas a Internet, por ejemplo, mediante WAMP o XAMPP podemos instalar un entorno con el servidor APACHE, PHP, MySQL en Windows. Para Linux XAMPP o LAMP. Como ya dijimos en la unidad 1, si lo que te interesa es simplemente escribir en Internet y no te atrae la parte tcnica o informtica, lo ms adecuado es utilizar los blogs gratuitos como Blogger o WordPress.com.
13.2. Servidores
Para que tu pgina se vea desde Internet simplemente tiene que estar almacenada en un servidor de Internet. Es decir, debes disponer de espacio en un servidor para poder subir tus archivos, donde cualquiera pueda verlos. Cualquiera puede tener un servidor de Internet, slo hace falta un ordenador, una direccin IP fija, una conexin telefnica y un software adecuado, como el servidor Apache, que adems es gratuito. Esto explica el gran crecimiento inicial de Internet. Han surgido miles de servidores que comparten su informacin por el simple gusto de aprender y ensear. Y muchos ms que esperan hacer negocio en la red. De todas formas, crear un servidor tiene cierta complejidad y se sale del mbito de este curso, adems necesitaras una conexin permanente a Internet y un ordenador con el servidor web en funcionamiento las 24 horas del da. S es ms accesible instalar en servidor local como WAMP, en el curso de Dreamweaver de aulaClic lo tienes explicado. Para acceder a un servidor de Internet hay dos alternativas, buscar un servidor gratuito o contratar uno de pago. Para empezar puede servir un servidor gratuito pero para cosas ms serias es conveniente utilizar un servidor de pago. a) Servidores gratuitos. Podemos diferenciar dos alternativas gratuitas: Sitios especializados. Existen algunos sitios web especializado en ofrecer espacio gratuito como Fortunecity, Tripod, iEspaa, Galeon, etc. La mayora colocarn publicidad en las pginas alojadas. Los servidores gratuitos pueden imponer restricciones en el uso de ciertas instrucciones de programacin web y no te permiten cambiar la configuracin del servidor. Cada vez es ms difcil encontrar servidores gratuitos con un mnimo de calidad. Google Sites es un caso aparte. Algunos proveedores anuncian servidores gratuitos pero al leer el contrato con detalle podemos encontrar condiciones como que slo es gratuito el primer mes, que hay que tener un nmero mnimos de visitas, etc. Tambin hay que destacar que la mayora de servidores gratuitos no admiten el uso de pginas dinmicas ni bases de datos.
Proveedores de acceso. Cuando contratas un servicio de conexin a Internet a travs de un proveedor, suelen ofrecer de forma gratuita un espacio web en sus servidores. Por ejemplo ya.com, Orange, Telefnica, etc. Si ya tienes contratada una conexin a Internet, revisa las condiciones porque probablemente tienes derecho a un espacio gratuito en el servidor. b) Servidores de pago. Si quieres tener un lugar ms profesional donde colocar tus pginas o las de tu empresa puedes utilizar los servicios de empresas especializadas que por menos dinero de lo que piensas te ofrecen muchos servicios, prueba a visitar Arsys , Acens o Alojalia y ver sus condiciones y tarifas. Los servidores pueden ser de dos tipos bsicos, compartidos o dedicados. Un servidor compartido (shared hosting) es aquel que comparte mquina fsica con otros servidores compartidos. En un servidor dedicado una mquina fsica soporta un solo servidor dedicado. En un servidor compartido no se te permiten cambiar completamente la configuracin del servidor, ni hacer reinicios fsicos de la mquina, mientras que un servidor dedicado puedes hacer todo lo que quieras puesto que el servidor est completamente a tu disposicin. Inicialmente es preferible un servidor compartido ya que es ms asequible y ofrece prcticamente todos los servicios que son necesarios para un uso particular o profesional. Un servidor dedicado es conveniente para un sitio web con muchas visitas o si se requiere una configuracin muy especial del servidor. Los servidores ubicados en EE.UU. ofrecen ms recursos por el mismo precio pero con el inconveniente de la atencin al cliente en ingls: lista de los mejores. En este buscador de alojamiento o Hosting puedes encontrar servidores con las caractersticas que desees: BuscaHost. A la hora de contratar un servidor ten en cuenta que es importante la velocidad con la que las pginas se cargan en Internet y no todos ofrecen la misma velocidad de transferencia o ancho de banda. Algunos servidores ofrecen "espacio ilimitado" pero en realidad quieren decir "espacio suficiente" para la mayor parte de los usuarios. Tambin es importante fijarse en las condiciones del servicio de atencin al cliente que ofrecen los distintos proveedores.
Un servidor web necesita disponer de un dominio de Internet para que se pueda acceder a l en la forma http://www.nombre_dominio.com. Por ejemplo, si quieres disponer del sitio web http://www.dibujosdemotos.com debers contratar el registro del dominio
"dibujosdemotos.com" (siempre que alguien no lo haya registrado antes). Los dominios hay que contratarlos en un registrador autorizado por un periodo de tiempo determinado, por ejemplo, un dominio .com por un ao vale sobre 25 euros. Las empresas que ofrecen alojamiento tambin suelen ofrecer registro de dominios: Arsys o Acens Los servidores gratuitos suelen ofrecer subdominios de la forma
http://www.servidor_gratuito.com/tu_subdominio, de forma que no necesitas registrar ningn dominio ya que los subdominios no se registran.
La principal ventaja del FTP, a parte de su comodidad, es que nos permite subir varios archivos y carpetas enteras a la vez, sin tener que ir uno por uno. b) Utilizar un editor de pginas web que incorpore esta funcionalidad. Por ejemplo, el Dreamweaver. Algunos editores profesionales incorporan el acceso FTP. Esto que nos permite subir y descargar los archivos cmodamente usando el interfaz del editor. Adems, nos permiten tenerlos sincronizados, e ir subiendo automticamente aquellos archivos que vayamos actualizando. Puedes encontrar ms informacin sobre esto en el Curso de Dreamweaver en aulaClic. c) Utilizar las facilidades proporcionadas por la empresa de hosting. Realmente no necesitamos ninguno de los programas anteriores, aunque casi siempre sean de mejor calidad. Toda empresa de hosting nos proporciona un interfaz a travs del que subir archivos al servidor. Este interfaz depende de la empresa. Los de alojamientos gratuitos suelen ser bastantes simples, permitindonos subir unos pocos archivos cada vez a travs de un formulario web. Esto resulta muy tedioso si tenemos que subir un sitio completo de tamao medio. Los alojamientos de pago suelen tener un mejor servicio. Algunos implementan un interfaz muy completo (WebFTP) que realmente puede sustituir al cliente FTP.
inicialmente los enlaces tienen ms importancia porque sin ellos no podremos subir puestos en los buscadores. Para conseguir visitas provenientes de los buscadores hay que utilizar tcnicas de posicionamiento y para conseguir visitas desde otras pginas hay que conseguir enlaces. Aunque ambas estn relacionadas, ya que cuantos ms enlaces tengamos, mejor apareceremos en los buscadores, y viceversa. Aunque algunos se empean en decir que las tcnicas de posicionamiento e intercambios influyen mucho en el nmero de visitas recibidas (y cobran mucho dinero por aplicarlas) en realidad lo ms importante es el contenido de la web, ya que con un buen contenido, los propios buscadores te incluyen automticamente en sus buscadores en una buena posicin y los webmasters incluyen enlaces a tu pgina sin pedrselo. Esto no quiere decir que no haya que utilizar estas tcnicas, sino que su importancia es relativa y supeditada al contenido de la pgina. Posicionamiento. Fundamentalmente nos vamos a referir al posicionamiento en el buscador Google, porque es el ms utilizado y porque los dems buscadores se basan en cosas similares para ordenar sus resultados. Cuando una persona introduce una o varias palabras claves en un buscador, ste realiza complejos procesos para obtener una lista de resultados con las pginas que mejor responden a esa bsqueda. Estos procesos son secretos y los buscadores slo dan una informacin general de los factores que influyen en los resultados. Esto es as por dos motivos, el primero para que la competencia no los copie y el segundo para que los creadores de las pginas no hagan trampas para obtener mejores posiciones. Adems segn unos van descubriendo los entresijos de los buscadores, los otros los van cambiando para penalizar a los tramposos. Al final, desde el punto de vista del creador de pginas web, se impone el sentido comn, y lo mejor es dedicarse a mejorar en contenido en lugar de andar bordeando el lmite de lo permitido en tcnicas de posicionamiento. Despus de estos prembulos, vamos ya con las tcnicas de posicionamiento. Hay que decir que conseguir buen posicionamiento es una tarea que requiere bastante tiempo, hasta las dos o tres semanas no se ven los primeros resultados y hacen falta varios meses para empezar a ver realmente el lugar que le corresponde a nuestro sitio web. Hay que
tener en cuenta que dado el gran nmero de pginas existentes, a los robots de los buscadores (tambin conocidos como araas o crawlers) les lleva bastantes das encontrar las pginas nuevas. 1. Contenido de calidad. Como ya hemos dicho ste es el factor primordial para obtener un buen posicionamiento. Sin contenido de calidad no hay nada que hacer, con contenido de calidad lo dems viene rodado. Contenido de calidad quiere decir contenido interesante, bien redactado y con diseo agradable. Una pgina con un buen contenido y mal posicionamiento tardar ms en alcanzar una buena posicin, pero lo conseguir. 2. Sitio bien estructurado y sencillo. Para los robots de Google cuanto ms fcil sea extraer la informacin de la pgina tanto mejor. Hay que colocar suficientes enlaces de texto y con las palabras clave adecuadas y huir de las excesivas florituras y virgueras tcnicas. 3. Lograr enlaces desde otros sitios web. El factor de ms peso en el PageRank de Google es el nmero y la calidad de los enlaces que apuntan a nuestro sitio. Informa de la existencia de tu pgina a todo el mundo, principalmente a los sitios de temtica similar. En el punto siguiente daremos ms informacin sobre este tema. 4. Alta en Google. El primer paso para conseguir una buena posicin en Google es aparecer en el buscador. Para hacerlo visita esta pgina: addurl. 5. Infrmate de las reglas de los buscadores y no te las saltes, si lo haces y te penalizan perders muchos meses para recuperar tu posicionamiento. En esta pgina tienes informacin sobre las directrices de calidad de Google. 6. Sobre el diseo de la pgina ten en cuenta estas recomendaciones, si utilizas demasiado Flash, frames, DHTML, JavaScript y mucha programacin web hars ms difcil el trabajo de los robots. Es conveniente utilizar ttulos cortos y claros, con los estilos de encabezados (h1, h2). Los ttulos son fundamentales en las bsquedas, procura utilizar el sinnimo ms comn, por ejemplo, coches, vehculos, autos, automviles, carros. Hay herramientas para ver cules son las palabras ms buscadas. Google no reconoce el texto incluido en imgenes, no utilices imgenes para los ttulos ni para los enlaces principales del sitio web. Si utilizas imgenes, usa el atributo ALT para poner el texto relevante. 7. Dar de alta en directorios importantes como Dmoz. Aunque han perdido importancia todava son una forma de conseguir enlaces. 8. Para conocer las palabras clave ms usadas hay herramientas como la proporcionada por Google AdWords. Con ella podemos ver la relevancia de palabras clave y las bsquedas que se han hecho con esas palabras. 9. Enlazar las pginas desde el propio sitio web de forma bien estructurada. 10. Informar a Google de la actualizaciones con Sitemaps Hay algunas recomendaciones que son contradictorias, por ejemplo, los enlaces con html son mejor indexados por los robots que los incluidos en funciones javascript, pero los mens con javascript son ms intuitivos para los usuarios y mejoran el diseo de la pgina.
Como resumen podramos decir que todas las tcnicas de posicionamiento se resumen en dos, la primera es que generes contenido de calidad y la segunda que utilices las tcnicas con sentido comn y sin hacer trampas. Conseguir enlaces. 1. Como venimos diciendo, la mejor forma de conseguir que otros webmasters enlacen nuestra pgina es creando una pgina con contenido y diseo de calidad, as los webmasters considerarn que poner un enlace a nuestra pgina es algo til para sus visitantes. 2. Dar a conocer nuestro sitio web. Esta tarea es muy importante, sobre todo en una primera fase, ya que es casi la nica forma de conseguir enlaces. Conseguir enlaces es realmente difcil por lo que no queda otro remedio que invertir tiempo y esfuerzo en ello. Hay que buscar sitios de temtica similar y registrarse, participar en las actividades, contestar preguntas en los foros, aportar algo de forma que luego podamos pedir a los dems usuarios y al webmaster que visiten y recomienden nuestro sitio. En funcin de la temtica de nuestro sitio deberemos buscar participar en determinados lugares como Foros, Blogs, Directorios, Redes sociales, etc. 3. Intercambios de enlaces. Buscar sitios web de temtica similar al nuestro y comprobar si tienen una seccin de intercambio de enlaces, si es as escribirles y proponerles un intercambio. Lo lgico es que los intercambios se realicen entre sitios de un Page Rank similar, por lo cual, al principio hay que dirigirse a sitios con un PageRank bajo ya que en otro caso ser dificil que acepten el intercambio. Segn vaya aumentando nuestro PageRank podremos solicitar intercambios con sitios ms importantes. 4. Amigos. Si conocemos a personas relacionadas con el mundo de las pginas web hay que comunicarles nuestro nuevo sitio web. Por supuesto, tambin debemos intentarlo con nuestros amigos del ciberespacio, hay muchas redes sociales, por ejemplo Hi5, Facebook, Orkut, con cientos de comunidades en las cuales podemos participar y obtener visitas de nuestros nuevos "amigos". Para conocer el Page Rank de una web, puedes instalar la barra de Google, visitar sitios especializados como mipagerank.com, o con herramientas como Seo Quake
La publicidad contextual es un sistema que inserta de forma automtica publicidad relacionada con el contenido de la pgina web, por ejemplo, si la pgina habla de deporte, se insertarn anuncios de anunciantes relacionados con el deporte. Cada vez que un usuario hace clic en un anuncio el propietario de la pgina recibe una cantidad de dinero que vara segn cada anuncio. El sistema ms popular de publicidad contextual es AdSense de Google, y lo vamos a ver ms en detalle a continuacin. La publicidad directa es la que el propietario de la pgina acuerda directamente con el anunciante, en funcin del tipo de publicidad y del nmero de visitantes se pacta el precio. Una variante de este tipo de publicidad es el patrocinio mediante el cual una empresa o entidad paga una cantidad al mes por aparecer como patrocinador de la pgina. Existen programas gratuitos que permiten gestionar este tipo de publicidad contabilizando los clics. La publicidad por registro o afiliacin se basa en pagar por cada registro o venta que produzca el anuncio, a diferencia de la publicidad contextual que paga cada vez que el usuario hace clic en el anuncio, independientemente de lo que pase despus. Es decir, en la publicidad por registro o venta el sistema controla si el usuario que hace clic acaba registrndose o comprando el producto anunciado, y en caso afirmativo el propietario de la pgina web recibe la comisin pactada previamente. Estos sistemas se basan en guardar una cookie apuntndose nmero IP, en el ordenador del usuario cuando este hace clic en el anuncio, y comprobando luego si, en un plazo determinado de das, el usuario acaba comprando el producto o registrandose en la tienda on-line. En estos sistemas se ofrecen altas comisiones pero el nmero conversiones de clics en registros o compras son bajos. Ejemplos de este tipo de publicidad son la publicidad que ofrecen los casinos on-line, TradeDoubler tambin tiene una seccin con este tipo de publicidad. La publicidad por agencia est reservada al sector empresarial, al contrario que los otros sistemas que hemos visto anteriormente y que pueden ser utilizados por autores de pginas web particulares. Las agencias de publicidad en internet gestionan los anuncios de los grandes medios de comunicacin y de empresas importantes. AdSense de Google.
Como decamos, este es el sistema ms extendido de publicidad contextual y vamos a verlo con ms detenimiento. Hay otros sistemas que tienen un funcionamiento muy similar, como Yahoo, Tradedoubler. AdSense es un sistema que supuso en el momento de su nacimiento para los pequeos webmasters o propietarios de pginas web un incremento de hasta cinco veces en las ganancias que se estaban consiguiendo hasta ese momento. Como consecuencia, algunos de ellos se pudieron dedicar profesionalmente a crear pginas web, aumentando la competitividad en un mundo hasta ese momento bastante "amateur" o de aficionados, lo cual trajo consigo un aumento de la calidad o de la comercialidad, segn se quiera ver. Los sistemas de anuncios que prometen grandes ingresos suelen resultar, al final, poco satisfactorios. Los formatos ms usuales de publicidad son el banner, el anuncio de texto, anuncios multimedia y anuncios incrustados en los vdeos. Tambin se puede poner publicidad en los dispositivos mviles. El sistema AdSense es utilizado por propietarios de pginas web (webmasters) y se encarga de mostrar anuncios de empresas (anunciantes) que quieren hacer publicidad en Internet. Los anunciantes utilizan el sistema AdWords para contratar con Google su publicidad. Simplificando un poco podemos decir que los anunciantes no saben "a priori" donde se van a mostrar sus anuncios y los webmasters no saben qu anuncios se van a mostrar en sus pginas. Google se encarga de colocar cada anuncio en las pginas que mejor se le adapten, y cuando un usuario hace clic en un anuncio cobra al anunciante y paga al webmasters , por supuesto, quedndose una comisin. Si se muestra un anuncio y nadie hace clic, ni el anunciante paga ni el webmaster cobra. Esto no es as en otros sistemas de publicidad donde se paga y cobra por mostrar el anuncio, independientemente de si el usuario hace clic o no. Decidir qu anuncio se muestra y en qu pgina no es un asunto trivial y Google tiene en cuenta varios factores para establecer una subasta instantnea entre las pginas y los anuncios de forma que se optimice el proceso para las tres partes implicadas. Uno de los factores que se usa es el contenido de la pgina, de forma que los anuncios tengan relacin
con las pginas, as es ms probable que el usuario haga clic en el anuncio que es de un tema que le interesa, por esto a este tipo de publicidad se le llama contextual.
Hay un minimo de dinero al que hay que llegar para recibir el pago, el mnimo para Espaa en 2009 anda sobre 70 euros. En AdSense se pueden poner anuncios de contenido, que son los ms normales, y tambin anuncios de bsqueda, as como anuncios para mviles. En una pgina adems de los anuncios de AdSense, tambin se pueden poner otro tipo de anuncios, aunque tampoco es recomendable poner excesiva publicidad porque el usuario se puede enfadar y no volver ms.