Estilos aplicados a formularios
Nuevos campos
<form id="nuevoscampos"> <label>Correo electrónico: </label><input type="email" required="required"/> <label>Web personal: </label><input type="url" placeholder="http://..."/> <label>Teléfono: </label><input type="text" pattern="[0-9]{9}"/> <label>Fecha de nacimiento: </label><input type="date"/> <label>Hora actual: </label><input type="time"/> <label>Nº de semana del año: </label><input type="week"> <label>Año de nacimiento: </label><input type="number" min="1900" max="2014" step="1" value="1984" id="edad"/> <label for="edad2">Indique su edad: </label><input type="range" min="18" max="100" step="2" value="48" id="edad2" oninput="document.getElementById('valor').textContent=value"> <output id="valor">0</output> <label>¿Qué sistema operativo utiliza? </label><input id="os" type="text" list="OS"><datalist id="OS"> <option value="Mac OS"> <option value="Windows"> <option value="Linux"> </datalist> <label>¿Cuál es tu color favorito?: </label><input type="color"> <input type="submit" id="enviar" value="Enviar" /> </form>
Las pseudo-clases para formularios
Vamos a ver algunos ejemplos de las nuevas pseudo-clases: :enabled, :disabled , :checked y :focus.
#acepto:checked+label { background-color: gold; font-weight: bold; } #hombre:checked+label, #mujer:checked+label { font-style: italic; } :enabled { background-color: lightgreen; } :disabled { background-color: lightcoral; } input:focus { outline: solid 3px green; outline-offset: 2px; }
También podemos utilizar las clases :required y :optional.
#input:required { background-color: lightcoral; } #input:optional { background-color: lightgoldenrodyellow; } #input#enviar { background: none; }
Validación para formularios
Vamos a modificar el diseño de la validación de los formularios con los estilos CSS3.
input:focus:invalid { background: url('../img/x.png') no-repeat 98% center; } input:focus:valid { background: url('../img/ok.png') no-repeat 98% center; } input:focus:valid:not(#enviar) { background: url('../img/ok.png') no-repeat 98% center; }
Disponemos de otras dos pseudo-clases para validar los números y las fechas. La pseudo-clase :in-range se aplica a los valores que se encuentran dentro de los límites definidos y la pseudo-clase :out-of-range se aplica a los valores que excedan de esos límites.
input#edad:out-of-range { background-color: pink; } input#edad:in-range { background-color: green; }