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; 
	}