Y en el código CSS se añaden las reglas necesarias para alinear los campos del formulario: form div{ margin: 0.5em 0; } form label{ display: block; margin: 0.5em 0 0 0; width: 25%; float: left; } Resaltar el campo seleccionado Una de las mejoras más útiles para los formularios HTML consiste en resaltar de alguna forma especial el campo en el que el usuario está introduciendo datos. Para ello, CSS define la pseudo-clase :focus, que permite aplicar estilos especiales al elemento que en ese momento tiene el foco o atención del usuario. Añadiendo la pseudo-clase :focus después del selector normal, el navegador se encarga de aplicar esos estilos cuando el usuario activa el elemento: input:focus { border: 2px solid navy; }
15
Pseudo-clase :required Utilizado para seleccionar elementos requeridos, más específicamente, se utiliza para seleccionar los elementos de un formulario que a los que se le han establecido el atributo required. En el siguiente ejemplo se le coloca una pequeña imagen de un asterisco a todos los campos obligatorios. form input:required{ background: #fff url(red-asterisk.png) no-repeat 98% center; }
Pseudo-clase :optional Esta pseudo-clase se utiliza para seleccionar los campos NO requeridos de un formulario. En el siguiente ejemplo se le coloca un borde de color naranja a los campos de texto optativos (no obligatorios). form input [type="text"]:optional{ border-color: orange; }
Pseudo-clase :invalid Pseudo-clase utilizada para seleccionar y dar estilo a los elementos input cuyos valores NO sean validos de acuerdo a su tipo especificado en el atributo type. En el siguiente ejemplo se combina el uso de las pseudo clases :invalid y :focus para estilizar los campos de texto que tengan el “foco” y que posean un valor no válido.
form input:focus:invalid { background: url(rojo.png) no-repeat 98% center; } Pseudo-clase :valid Pseudo-clase utilizada para seleccionar y dar estilo a los elementos input cuyos valores sean validos de acuerdo a su tipo especificado en el atributo type. En el siguiente ejemplo se combina el uso de las pseudo clases :valid y :focus para estilizar los campos de texto que tengan el “foco” y que posean un valor válido. form input:focus:valid { background: url(verde.png) no-repeat 98% center; } 16
Pseudo-clase :checked Se utiliza para seleccionar checkbox, y option en un select, en el estado seleccionado (ejemplo al hacer click a un checkbox). Como ejemplo, considérese el siguiente código HTML en el que se inserta un input de tipo checkbox en el formulario del ejemplo anterior.
Con la siguiente regla de estilo se selecciona al elemento span que es hermano del checkbox seleccionado y se le cambia el color de fondo. form input [type = "checkbox"]:checked + span{ background-color: yellow; } El formulario anterior luciría de la siguiente manera según el checkbox este seleccionado o no.
Pseudo-clases :in-range y :out-of-range Estas pseudo-clases son utilizadas para dar estilos a elementos que tienen rangos de alcance, cuando: El valor del elemento destinado a este se encuentra dentro de los límites del rango especificado ( :inrange ). El valor que el elemento destinado a este se encuentra fuera de los límites del rango especificado ( :out-of-range ). Como ejemplo, considérese el siguiente código HTML en el que se inserta un input de tipo number en el formulario del ejemplo anterior.
Edad:
17
value="25" id="edad" />
Con las siguientes reglas de estilo se selecciona el input con id “edad” y se le coloca un color de fondo distinto cuando obtiene el foco dependiendo de si el valor seleccionado está dentro del rango o fuera de él (estos rangos se definen con el atributo min y max del input de tipo number). input#edad:focus:out-of-range { background-color: lightpink; } input#edad:focus:in-range { background-color: lightgreen; }
VALIDACIÓN DE FORMULARIOS CON HTML5 HTML5 nos permite definir patrones de validación para los diferentes campos de un formulario sin utilizar ni una sola línea de javascript. Esta característica nos permite ahorrarnos algunas solicitudes inadecuadas y el consiguiente gasto innecesario de recursos del servidor, aunque sin duda la principal ventaja es la mejora de la experiencia del usuario. Es importante anotar que la validación de formularios con HTML5, al igual que la validación con javascript, se realiza en el lado del cliente (navegador web) y, por tanto, puede ser modificada por el usuario o ignorada totalmente. Esto quiere decir que las cuestiones relativas a la seguridad del formulario no deben basarse en esta validación ni es sustituta de la validación server-side. El atributo required Este atributo se utiliza para decir al navegador los campos del formulario que son requeridos de forma obligatoria, es decir, que no pueden quedar vacíos. Basta con poner required o required="required".
Nombres:
18
El atributo title En el momento en que se encuentra un error de validación se ejecuta la acción por defecto del navegador, normalmente aparece un pequeño globo emergente (tooltip) conteniendo un texto de advertencia. Añadiendo el atributo title en la etiqueta
, se puede extender la información mostrada.
Nombres:
El atributo type Como ya se vio anteriormente, la etiqueta input admite muchos valores en su atributo type para cambiar el tipo de datos a recibir (email, contraseñas, url, números, etc.) Si los datos introducidos en el campo del formulario no coinciden con el tipo especificado, el navegador lanzará un aviso al usuario y el formulario no se enviará. Por ejemplo, podemos requerir que se introduzca una dirección de correo electrónico:
Expresiones regulares: Atributo pattern El atributo pattern es para propósitos de validación. Usa expresiones regulares para personalizar reglas de validación. Algunos de los tipos de campo ya estudiados validan cadenas de texto específicas (correos, url, etc.) pero no permiten hacer validaciones personalizadas, como por ejemplo el carnet de la UDB que consta de dos letras y seis dígitos. No existe ningún tipo de campo predeterminado para esta clase de entrada. El atributo pattern nos permite crear nuestro propio tipo de campo para controlar esta clase de valores no ordinarios. Es posible incluso incluir un atributo title para personalizar mensajes de error. Retomando el ejemplo del carnet de la UDB, el pattern que permitiría validar dicha entrada seria el siguiente: [A-Za-z]{2}[0-9]{6} Lo cual indica que se espera recibir dos letras (en mayúsculas o minusculas) y 6 dígitos. El codigo HTML para validar ese campo sería entonces:
19
Estudiemos paso a paso los elementos para construir una expresión regular: Clases de caracteres Las clases de caracteres se utilizan para definir el contenido de un patrón. Esto es, lo que el patrón debe buscar.
Operadores lógicos Los operadores lógicos de la siguiente tabla nos permiten combinar caracteres o clases de caracteres para formar expresiones regulares más complejas.
Cuantificadores Los cuantificadores definen cuantas veces aparecerá un elemento en una expresión.
20
Metacaracteres de frontera Los metacaracteres de frontera nos permiten especificar en qué parte de una cadena buscar por una coincidencia con la expresión regular. ˆ indica que el valor deberá comenzar obligatoriamente por los elementos especificados justo a continuación. ˆ[0-9]{2} indica que el valor deberá comenzar con dos cifras para que sea válido. $ indica que el valor deberá terminar obligatoriamente por los elementos específicos que la preceden. [a-z]$ indica que el valor deberá terminar con una letra en minúscula para que sea válido.
Ejemplos 1. Comprobar si el valor del campo de texto posee el patrón “abc”
2. Comprobar si el valor del campo de texto está formado por un mínimo de 5 letras mayúsculas o minúsculas y un máximo de 10.
3. Comprobar si el valor del campo de texto solo contienen los caracteres a ó b
III. MATERIALES Y EQUIPO No. 1
2 3 4
Cantidad Descripción 1 PC con uno de los editores de páginas Web: Sublime Text, Brackets, Notepad ++, BlueFish y HTML Kit y cualquiera de los navegadores siguiente: Internet Explorer 7 u 8, Firefox (última versión disponible), Google Chrome (última versión disponible), Opera (última versión disponible), Safari (última versión disponible). 1 Guía de Laboratorio #8 de Lenguajes de Marcado y Estilo Web 1 Recursos para laboratorio práctico. 1 Memoria USB
21
IV. PROCEDIMIENTO INDICACIONES GENERALES 1. Crear una carpeta en “mis documentos” y colocarle el nombre N°Carnet_Guia8_LME, Nota: Cambiar N°Carnet por su número de carnet brindado por la Universidad. 2. Descargar los recursos de la guía, descomprimirlos y colocar las carpetas img y css dentro de la carpeta creada en el paso anterior. Ejercicio 1. Construyendo un formulario alineado sin usar tablas. 1. Cree un nuevo archivo html con nombre: Ejercicio1.html. 2. Guarde el archivo en su carpeta de trabajo. 3. Realizar la maquetación web según lo indica la siguiente imagen.
4. Colocar el contenido de las etiquetas según indica la siguiente tabla. Etiquetas input
input
Contenido Dentro de fieldset Tipo: imagen ubicación de archivo: img/user.png clase: img
Tipo: texto Identificador: nombre Valor: vacio Validación:^[a-zA-Z\s]+$ Título: Solo se acepta letras Clase: control 22
Nombre de marcado de posición: Nombre Campo requerido //Salto de linea al final de etiqueta input
input
input
input
input
input
input
input
Tipo: imagen ubicación de archivo: img/tel.png clase: img Tipo: tel Identificador: telefono Valor: vacio Validación: ^[0-9]{4}-?[0-9]{4}$ Título: Solo acepta números en el siguiente formato: 2222-2222 Clase: control Nombre de marcado de posición: Número de teléfono Campo requerido //Salto de línea al final de etiqueta input Tipo: imagen ubicación de archivo: img/email.png clase: img Tipo: correo Identificador: correo Valor: vacio Título: Formato de correo: NombreCorreo@dominio Clase: control Nombre de marcado de posición: Correo Electrónico Campo requerido //Salto de línea al final de etiqueta input Tipo: imagen ubicación de archivo: img/pass.png clase: img Tipo: contraseña Identificador: password Valor: vacio Validación: ((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}) Título: Su contraseña debe ser de 6 a 15 caracteres y deben incluir una letra mayúscula, minúscula y un numero Clase: control Nombre de marcado de posición: Contraseña Campo requerido //Salto de linea al final de etiqueta input Tipo: checkbox Valor: acepto Clase: terminos
P
Acepto Términos, Condiciones y Política de Privacidad
button
Identificador: botón Tipo: submit
Crear Cuenta 23
5. Cree un nuevo archivo de tipo css con nombre estilo.css 6. Guardar el archivo en la carpeta llamada css dentro de su carpeta de trabajo. 7. Realizar las reglas de estilo necesarias según indique la siguiente tabla: 8.
Selector #login #login form #logindatos #login .img .terminos p.terminos #login input #login input.terminos .control .boton
.formdatos .formdatos form .formdatos fieldset
.formdatos img .formdatos button .formdatos p form
:required :invalid h1
Propiedades Margen superior:4%, Margen izquierdo:32%; Margen derecho:32% Ancho:400px, alineación de texto: center Borde:none, margen superior:5px, bordes redondeados:10px Margen: 18px, posición: absolute, ancho 30px, alto 30px, bordes redondeados:0px Vista: inline Tamaño de letra: 11px, color de letra:#fff Bordes redondeados: 15px, ancho:300px, alto:35px, margen :10px Ancho:20px, alto: 20px área de relleno izquierdo: 45px, tamaño de letra: 18px Color de fondo: rgba(164,179,87,1), bordes redondeados:15px, ancho:150px, alto:40px, color de letra: #fff, tipo de letra: Century Gothic, margen superior: 3px, margen izquierdo:185px; color de letra: #fff ancho:1115px, alto: 500px, borde redondeados:15px, relleno:22px, margen: 20px auto; Tipo de letra: Century Gothic, Área de relleno: 12px, float:left, ancho:25%, margen superior:5px, bordes redondeados: 10px, alto:332px, margen izquierdo:13px Float:left, ancho:90px, alto:70px, borde redondeados:5px, margen: 0px 22px Margen superior:3px, margen izquierdo: 830px Margen superior:15%, Área de relleno inferior:15%, tamaño de letra: 48px, alineación de texto: center. Tipo de letra: Century Gothic, color de fondo: rgba(76,76,76,1), sombreado de caja: 10px 10px 112px 0px rgba(0,0,0,0.75); Realizar prefijos de sombreado de caja para mozilla , chrome Bordes redondeados: 15px, caja de sombreado: 0px 0px 5px #808080 Bordes redondeados: 15px, color de borde: rgba(164,179,87,1) Area de relleno superior: 6px, color de letra: #fff
24
9. Agregar el llamado al estilo de estilo .css dentro de la etiqueta de nuestra página web 10. Visualizar el resultado de la página web en el navegador.
11. Probar las validaciones del formulario, y comprobar que el formulario nos enviara a página Ejercicio2.html hasta que todos los datos estén con el formato correcto.
Ejercicio #2. Controles de Formulario 1. Cree un nuevo archivo html con nombre: Ejercicio2.html. 2. Guarde el archivo en su carpeta de trabajo. 3. Realizar la maquetación web según lo indica la siguiente imagen.
25
4. Colocar el contenido de las etiquetas según indica la siguiente tabla. Etiquetas
Contenido Dentro de fieldset datos
Dentro de fieldset temas
Dentro de fieldset aficiones
26
5. Visualizar el resultado de la página web en el navegador.
Ejercicio #3. Envió 1. Cree un nuevo archivo html con nombre: Ejercicio3.html. 2. Guarde el archivo en su carpeta de trabajo 3. Realizar la maquetación web según lo indica la siguiente imagen.
4. Visualizar el resultado de la página web en el navegador.
27
Ejercicio # 4. Diseñando un formulario de login 1. 2. 3. 4. 5.
Cree un nuevo archivo html con nombre: login.html. Guarde el archivo en su carpeta de trabajo Escriba la estructura básica de un archivo html dentro de archivo creado en el paso 1. Cambiar el título de la página web por el texto “Ejemplo de formulario de logueo” Colocar el siguiente código HTML dentro del body de su página web
28
6. Crear el archivo logueo.css y guardarlo en la carpeta css dentro de su carpeta de trabajo. 7. Vincular la hoja de estilo con su pagina web. 8. Digitar las siguientes reglas de estilo dentro del archivo creado en el paso anterior. 9. Comenzaremos digitando los estilos generales para la página y el formulario
10. A continuación colocamos los estilos para la sección del formulario con la clase header
11. Ahora procedemos a estilizar el div con clase “login” dándole un pequeño relleno horizontal.
29
12. Procedemos darle estilo a los iconos que se mostraran a la izquierda de los campos de texto.
13. A continuación procedemos a darle estilos a los campos de texto a los cuales se les ha asignado la clase “text”
14. Visualice el avance del ejercicio en su navegador. Notará que cada uno de los campos de texto tienen una altura muy pequeña. Para aumentar dicha usaremos la propiedad line-height y haremos que los span y los input que son elementos en línea puedan aumentar su alto sin necesidad de insertar un salto de línea (esto se consigue con display: inline-block).
15. Ahora le daremos estilo al botón de tipo submit al cual se le ha aplicado la clase btn
30
16. Otro de los errores del formulario es que aún se ven las viñetas de los elementos de lista. Para corregir esto digitaremos las siguientes reglas de estilo:
17. A continuación procedemos a darle estilo a las opciones “Recordarme” y “Has olvidado tu contraseña?”
18. Ahora le daremos estilo a la sección que contiene los botones para iniciar sesión mediante redes sociales.
31
19. Finalmente la daremos estilo a la parte inferior del formulario.
32
20. Visualizar los resultados en el navegador. El formulario debería lucir de la siguiente manera:
33
V. ANALISIS DE RESULTADOS 1. Agregar validaciones en el formulario del ejercicio2.html, hacer que los datos de fecha, edad y dirección sean datos requeridos por los formularios, además agregar los siguientes patrones de validación en los siguientes campos: Nacionalidad Solo letras: ^[a-zA-Z\s]+$ Edad Solo números: ^(?:\+|-)?\d+$
El instructor evaluará el desempeño de su trabajo dentro la clase. Estos ejercicios se evaluarán en la misma hora de clase. VI. EJERCICIOS COMPLEMENTARIOS 1. Presentar un ejemplo en el que se usen todas las pseudo-clases para formularios (:focus, :valid, :invalid; :required, :optional, :checked, in-range y :out-of-range). Puede basarse en la información mostrada en la introducción teórica de esta guía. El formulario debe usar al menos 10 tipos de campos y debe estilizarse de forma que los label y controles este alineados (no puede usar tablas conseguir la alineación). Se evaluará la estética del formulario presentado. 2. Investigar la forma de crear formularios con el framework bootstrap. Presente al menos dos ejemplos en los que apliquen los elementos investigados. Fecha de entrega: Semana de regreso de vacaciones.
34