HTML5 ha mejorado ciertos aspectos, proporcionando nuevos atributos que nos permiten marcar los campos según sea necesario (:required) o si es válido (:valid) o no (:invalid).
Con estos nuevos pusedo-elementos podemos darle estilo a las etiquetas, y nos permite mostrar al usuario el estado del campo. Read more