Desarrollo de Aplicaciones Web

Práctica 3: HTML (2)

1. Objetivos

2. Recursos

¿Qué etiquetas existen en HTML? ¿Qué atributos existen y qué valores pueden tomar? ¿Cómo se emplean las etiquetas?

¿Cómo puedo saber que el código HTML que he escrito es correcto?

¿Cómo puedo comprobar que la página web se visualiza correctamente en diferentes navegadores?

¿Existe alguna herramienta que me pueda ayudar a escribir el código HTML?

¿Cómo puedo saber si una etiqueta de HTML5 es compatible con la mayoría de los navegadores web?

3. ¿Qué tengo que hacer?

En esta práctica tienes que diseñar e implementar un formulario que aproveche las novedades que incorpora HTML521. Aunque en un desarrollo real hay que ser muy cuidadoso a la hora de emplear las últimas novedades de una tecnología, en esta práctica puedes experimentar y puedes utilizar todo lo que ofrece HTML5, aunque no sea compatible con algunos navegadores actuales.

El formulario es una nueva opción accesible desde la parte privada del sitio web. Por tanto, también debes realizar el típico formulario de control de acceso a la parte privada de una aplicación web.

Importante: por ahora, estas páginas simplemente tienen que mostrar datos estáticos de ejemplo y no deben realizar ningún tipo de cálculo o comprobación, ya que no se dispone de una base de datos ni de la capacidad de programar las páginas web. Sin embargo, la navegación entre las páginas debe funcionar correctamente. En próximas prácticas se irá mejorando el funcionamiento de la aplicación.

En concreto, tienes que modificar o crear las páginas que se indican con un color de relleno oscuro en la Figura 1.


PIC


Figura 1: Diagrama de páginas que componen el sitio web


Página formulario control de acceso
Contiene un formulario en el que se solicita el nombre de usuario y la contraseña necesarios para acceder a la parte privada. Esta página no es necesaria si el formulario de control de acceso se incluye en la página principal. En la figura se ha omitido porque el formulario de acceso está incluido en la página principal.
Página menú usuario registrado
Contiene enlaces con las funciones que puede realizar un usuario registrado: modificar sus datos, darse de baja, visualizar sus álbumes, crear un álbum nuevo, solicitar un álbum impreso y salir. Por ahora son simples enlaces que en las próximas prácticas enlazarán con las páginas correspondientes según se vayan creando.
Página “Solicitar álbum”
Contiene un formulario con los datos necesarios para solicitar un álbum impreso.
Respuesta “Solicitar álbum”
Muestra una confirmación de que se ha registrado la solicitud de un álbum y también muestra el coste del álbum (por ahora debe mostrar siempre el mismo coste, independientemente de los valores seleccionados por el usuario).

El formulario de solicitud de un álbum impreso contiene lo siguiente:

Importante: el formulario debe tener exactamente estos controles porque se usará en posteriores prácticas.

3.1. Nota

La parte privada de la aplicación y su integración con la parte pública la puedes plantear de varias formas. Dos formas típicas son:

Separada
La parte privada es completamente independiente de la parte pública, posee su propio menú o barra de navegación e incluso puede poseer su propio estilo visual (CSS). Evidentemente, debe existir una opción en el menú o barra de navegación que permita pasar de la parte pública a la parte privada y viceversa.
Integrada
La parte privada se integra como una opción más en el menú o barra de navegación de la parte pública. La parte privada aparece como un apartado más de la parte pública, que sólo está disponible cuando el usuario se ha identificado.

En la realización de esta práctica puedes aplicar cualquiera de estas dos estrategias o cualquiera similar.

Por ejemplo, en el gestor de contenidos WordPress se emplea una solución mixta. Cuando un usuario propietario de un blog no se ha identificado, el usuario visualiza el blog como cualquier otro usuario (Figura 2).


PIC


Figura 2: Parte pública de un blog en WordPress cuando el usuario no está identificado


Cuando el propietario se identifica (Figura 3), accede a la parte privada de WordPress (Figura 4), en la que el propietario tiene acceso a todas las opciones para administrar su blog: entradas, comentarios, apariencia, plugins, usuarios, etc. La parte privada no guarda ninguna relación con la parte pública: la estructura y la presentación de la página es totalmente diferente.


PIC


Figura 3: Formulario de identificación en WordPress



PIC


Figura 4: Parte privada de WordPress


Cuando el propietario regresa a la parte pública del blog, si sigue identificado (no ha pulsado en “Cerrar sesión”) sobre el blog se muestra una barra de herramientas que le permite acceder a ciertas opciones de administración directamente desde la parte pública (compara la Figura 2 con la Figura 5).

Estas opciones son realmente accesos rápidos o atajos a las opciones correspondientes en la parte privada del blog (Figura 6).


PIC


Figura 5: Parte pública de un blog en WordPress cuando el usuario sí que está identificado



PIC


Figura 6: Parte privada de WordPress


Muy importante: tienes que cumplir exactamente lo que se te pide en cada práctica porque las prácticas son acumulativas, si te desvías de lo que se te pide es posible que tengas graves problemas en prácticas posteriores.

Muy importante: en esta práctica no te tienes que preocupar por la presentación visual de las páginas web. La presentación visual la definirás en las próximas prácticas con la tecnología CSS.

4. ¿Cómo lo hago?

Primero, realiza un borrador o prototipo (mockup) de la página que vas a diseñar con un montaje apropiado donde la información quede bien organizada y esté legible y fácil de encontrar. Un ejemplo podría ser el mostrado en la Figura 7.


PIC


Figura 7: Prototipo del formulario de solicitud de un álbum


Importante: el formulario debe tener exactamente la tabla de tarifas que aparece en el prototipo porque se usará en posteriores prácticas.

Usando como plantilla alguna de las páginas HTML diseñadas en la práctica anterior, implementa el montaje del mockup. Usa las etiquetas y atributos de HTML5 necesarios.

Para el formulario, usa las etiquetas y atributos nuevos de formularios de HTML5 con el fin de contemplar las características y prestaciones que dice el enunciado. En algunos casos tendrás que tomar decisiones sobre que tipo de control necesitas para recoger adecuadamente los datos del usuario. Intenta utilizar el más adecuado en cada caso, el que proporcione la mejor usabilidad al usuario final.

Indica los campos que sean obligatorios. Para aquellos campos que sean difíciles de entender, añade alguna explicación o aclaración como ayuda. Si algún campo requiere un formato determinado en los datos de entrada, explícalo y pon algún ejemplo.

HTML5 añade tipos de campos nuevos que puedes usar en tus formularios, en la Cuadro 1 tiene una enumeración de los campos de formulario soportados por HTML5 con una breve explicación.






EtiquetaAtributo

Descripción

Nuevo en

HTML5




input type="hidden"

Campo oculto

No




input type="text"

Campo de texto normal

No




input type="password"

Campo de texto velado para contraseñas

No




input type="email"

Un cuadro de texto que verifica que su contenido sea una dirección de correo electrónico correcta





input type="url"

Un cuadro de texto que verifica que su contenido sea una dirección de internet (web) correcta





input type="tel"

Un cuadro de texto para contener un número de teléfono





input type="number"

Crea un campo con contenido numérico, permite rangos y otros modificadores





input type="file"

Un control que permite seleccionar uno o varios ficheros para enviarse al servidor web

No




input type="radio"

Crea un botón de radio (excluyente)

No




input type="checkbox"

Crea un botón de comprobación que permite marcar más de un valor

No




input type="submit"

Botón que al recibir un clic envía el formulario al servidor

No




input type="reset"

Botón que limpia o reinicia los controles del formulario

No




input type="button"

Crea un botón sin comportamiento asociado por defecto

No




input type="image"

Botón que visualiza una imagen, al recibir un clic envía el formulario al servidor

No




input type="color"

Permite escoger un color a partir de una paleta de colores





input type="range"

Define un campo que contendrá un valor dentro de un rango





input type="search"

Usado para campos en los que se introducen criterios de búsqueda





input type="date"

Define un campo que permite seleccionar o escribir una fecha. Según el navegador, la fecha se puede seleccionar a partir de un selector de fechas





input type="datetime-local"

Define un campo que permite seleccionar o escribir una fecha y una hora sin zona horaria. Según el navegador, la fecha se puede seleccionar a partir de un selector de fechas





input type="week"

Permite escoger una semana año. Algunos navegadores muestran un selector gráfico





input type="month"

Permite escoger un mes del año. Algunos navegadores muestran un selector gráfico





input type="time"

Permite escoger una hora y minuto. Algunos navegadores muestran un selector de hora gráfico.





select

Muestra una lista desplegable que permite seleccionar uno o varios valores

No




datalist

Genera una lista para asociarla a un campo de texto y así acotar los valores posibles a modo de ayuda al usuario





textarea

Campo de texto multilínea

No




button

Define un botón

No




meter

Representa una medida dentro de un rango





progress

Representa una barra de progreso de una actividad





output

Muestra el resultado de un cálculo sobre unos valores y realizado mediante un script de cliente





label

Define una etiqueta asociada a un campo de formulario

No




fieldset

Crea grupos de campos de formulario y los relaciona visualmente

No




legend

Define un título o etiqueta de un conjunto de campos definidos con fieldset

No





Cuadro 1: Controles de formulario en HTML5

El control type="range" es muy interesante y útil para ciertas situaciones, pero para que su usabilidad sea correcta se deben realizar ciertos ajustes. En “<input type="range">”22 y “<output>: The Output element”23 se proporcionan consejos muy útiles. El control type="range" es el único punto de la práctica en el que se puede emplear JavaScript por ahora.

5. Recomendaciones

El objetivo de la asignatura es construir una aplicación web mediante el desarrollo de un prototipo que se irá refinando y ampliando en las diferentes prácticas. Antes de ponerte delante del ordenador a escribir páginas web puedes hacer (y es muy recomendable) un mockup (modelo a escala, maqueta) de cómo piensas que será el sitio web. Un mockup lo puedes hacer en papel, con una herramienta de diseño gráfico o con el mismo Microsoft PowerPoint.

Aunque puedes usar todas las novedades que incorpora HTML5, debes tener en cuenta que no todas las etiquetas y atributos de HTML5 son soportadas por todos los navegadores que se emplean en la actualidad, por lo que debes ser muy cuidadoso en un desarrollo real.

El uso del atributo placeholder en lugar de la etiqueta <label> asociada a un control de un formulario es una malísima idea. Se puede usar placeholder, pero siempre como un complemento a la etiqueta <label>.

Importante:

1http://www.w3schools.com

2http://www.w3.org

3http://floele.flyspray.org/htmlcheatsheet-ncr.pdf

4http://www.addedbytes.com/cheat-sheets/html-cheat-sheet/

5http://www.smashingmagazine.com/2009/07/06/html-5-cheat-sheet-pdf/

6http://html-tags.info/

7http://validator.w3.org

8http://addons.mozilla.org/es-ES/firefox/addon/249

9http://htmlhelp.com/tools/validator/

10http://browsershots.org

11http://www.totalvalidator.com/

12http://www.browsercam.com/

13http://notepad-plus.sourceforge.net/es/site.htm

14http://www.sublimetext.com/

15http://htmledit.squarefree.com/

16http://online-html-editor.org/

17http://cgi.w3.org/cgi-bin/tidy

18http://caniuse.com/

19https://html5test.com/

20http://html5readiness.com/

21Bueno, ya no son novedades porque HTML5 se publicó como recomendación en octubre de 2014, pero sí que puede quedar algún navegador antiguo que presente problemas con HTML5.

22https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range

23https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output

24El orden de configuración es importante porque el servidor web va a intentar encontrar los archivos en el orden indicado.

25https://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_limpiar_la_cach%C3%A9