Los formularios nos permiten obtener información del usuario.
El resultado puede ser una búsqueda en una base de datos o el envío del contenido por e-mail.
<form>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" placeholder="Introduce tu nombre">
<button>Enviar</button>
</form>
La etiqueta Form se utiliza para crear un formulario.
Puede contener los siguientes atributos que nos van a permitir definir su comportamiento:
action="send.php"
: Permite indicar la URL a la que se enviarán los datos.name="MiForm"
: Especificamos el nombre del formulario.autocomplete="on/off"
: Autocompletar campos de forma automáticamethod="get/post"
: Define como enviará los datos.Representa la etiqueta de un elemento de formulario.
Siempre debemos asociarlo al control al que corresponde. Podemo hacerlo mediante la el atributo for
(que tiene que ser idéntico al id
del elemento que queremos etiquetar, o ubicando el elemento dentro del label
<form>
/* Asociacion por atributo for */
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" >
/* Asociacion por anidación */
<label>
Nombre:
<input type="text" id="nombre" >
</label>
</form>
Es el elemento básico de un formulario.
Su funcionalidad varía dependiendo del valor de su atributo "type
".
Si omitimos el valor de "type" por defecto es "text
".
<form>
<input type="text" value="nombre"/>
</form>
El elemento <input type="text">
puede disponer de otros atributos como por ejemplo placeholder.
En este caso nos permite añadir un contenido predefinido.
Este atributo sólo puede contener texto.
<form>
<input type="text" placeholder="Introduce tu nombre" />
</form>
Podemos cambiar el estilo de placeholder
mediante los siguientes selectores css.
Mediante autofocus
el cursor se situa de forma automática en el elemento input
al cargar la página.
<form>
<input type="text" autofocus/>
</form>
Ejemplo de autofocus con jQuery fallBack.
Con required
obligamos al usuario a introducir un valor en este campo.
<form>
<input type="text" placeholder="Introduce tu nombre" required/>
</form>
Podemos cambiar el estilo de placeholder mediante los siguientes selectores css.
Oculta el valor del campo contraseña mientras se escribe
<form>
<input type="password" />
</form>
Permite especificar un tipo de archivo concreto para adjuntar en el envío del formulario.
<form>
<input type="file" name="imagen" accept="image/*">
</form>
<form>
<input type="submit" value="enviar">
</form>
Este elemento permite 2 estados: Marcado/desmarcado (true/false)
<form>
<label>
<input type="checkbox" />
Opción 1
</label>
</form>
Opciones de styling para checkbox
Este elemento permite 2 estados Marcado/desmarcado (true/false) pero limita al usuario a escoger entre un número limitado de opciones:
<form>
<input type="radio" name="sistemaOperativo" value="macosx"/>
<input type="radio" name="sistemaOperativo" value="linux"/>
<input type="radio" name="sistemaOperativo" value="windows"/>
</form>
Opciones de styling para checkbox
Permite especificar un color.
<form>
<input type="color" value="#c0ffee">
</form>
Permite especificar una fecha con un calendario desplegable.
Además podemos restringir valores máximos y mínimos para una fecha concreta.
<form>
<input type="date" name="fechaSalida" step="1"
min="2015-01-26" max="2015-12-31" value="2015-01-26">
</form>
Validación automática de formato e-mail.
En dispositivos móviles el teclado muestra la @.
<form>
<input type="email" name="userEmail">
</form>
Especificamos campos para introducir exclusivamente valores numéricos.
Podemos realizar operaciones aritméticas.
<form>
<input type="number" name="dividendo">
</form>
Permite al usuario seleccionar un valor numérico deslizando un control.
Podemos definir un valor mínimo, otro máximo y el valor de cada incremento.
<form>
<input id="slider" type="range" min="100" max="500" step="10" />
</form>
Especificamos el valor inicial del elemento.
Normalmente asignamos un valor con este atributo para elementos que no son editables por el usuario:
<form>
<select name="text">
<option value="MacOSX">Sistema operativo Mac</option>
<option value="Linux">Sistema operativo Linux</option>
<option value="Windows">Sistema operativo Windows</option>
</select>
</form>
Definimos un area con una anchura y altura determinada para que el usuario pueda introducir sus comentarios.
<textarea name="message" rows="10" cols="30">
</textarea>
Elemento diseñado específicamente para enviar los datos del formulario de la misma forma que hacía anteriormente input type="submit"
.
La ventaja principal es que permite contener elementos HTML.
<button type="button"> No lo hagas..</button>
Celda 1
Celda 2
Celda 3
El código del ejemplo anterior tendría la siguiente estructura:
En el siguiente ejemplo se pueden ver los diferentes elementos que componen una tabla:
Se trata de elementos "no contenedores" que permiten designar un conjunto de atributos comunes a todas las celdas que pertenezcan a una columna.
Una celda puede ser "extendida" en columnas mediante el atributo colspan. De esta forma podemos combinarlas según nos interese.
Celda 1 extendida en 2 columnas
Celda 1
Celda 3
De la misma manera, una celda también puede ser "extendida" en filas mediante rowspan.
Celda 1 extendida en 2 filas
Celda 1
Celda 2
Celda 4
Las tablas pueden ser anidadas las unas dentro de las otras para representar estructuras de datos más complejas.
Fijando una altura a una celda podemos utilizar la propiedad
vertical-align para alinear verticalmente el contenido
A pesar de que las tablas son consistentes e intuitivas no se recomienda utilizarlas como elementos de layout ya que trata a cualquier tipo de contenido como tabular data
Si necesitamos alguna característica exclusiva de tablas podemos crear la siguiente estructura que aporta el comportamiento de la tabla más la semántica del HTML:
ejemplo que muestra una de las ventajas de usar display:table
El único lugar en el que todavía se utilizan las tablas para crear layout es en e-mail marketing. El hecho de que los clientes de correo no hayan evolucionado al mismo ritmo que los navegadores web ha provocado que el único formato consistente entre los diferentes clientes de correo sea el formato tabla.