Je vous invite à aller lire le tutoriel complet sur le CSS que j’ai écrit.
Après avoir expliqué comment réaliser un bon formulaire HTML, pourquoi ne pas en réaliser un uniquement en CSS3 ?

Les propriétés CSS3 utilisées ici sont les suivantes :
- border-radius pour les bords arrondis
- box-shadow pour les ombres des blocs
- content pour rajouter du contenu au HTML
- gradient pour les dégradés des blocs
- rgba pour avoir des fonds transparents
- text-shadow pour les ombres du texte
J’utilise aussi les pseudo-classes CSS3 suivantes :
- :after pour rajouter du texte HTML à la suite d’un élément
- :last-child pour sélectionner le dernier enfant d’un élément
- :target pour séléctionner un élément lorsqu’une #ancre est utilisée dans l’adresse
Dernière fonctionnalité utilisée : le sélecteur avancé [type=text] pour sélectionner un élément selon la valeur d’un de ses attributs HTML.
Bien sûr, toutes ces nouveautés CSS3 ne marchent pas partout, mais elles fonctionnent très bien sous Firefox et Safari/Chrome (Webkit).
De nouvelles intéractions intéressantes
Sans parler du graphisme (qui contient des dégradés, des ombres, des bords arrondis.. en CSS3) et que vous pouvez voir si vous avez un (bon) navigateur compatible, il y a quelques intéractions possibles grâce à CSS3.
Pseudo-classe :last-child
Lorsqu’on peut éviter de rajouter des classes dans le HTML, il est préférable de le faire. Par exemple, la pseudo-classe :last-child permet de sélectionner le dernier enfant d’un élément. En l’occurrence, je sélectionne avec form p:last-child le dernier paragraphe et je lui enlève son margin-bottom. Ca permet d’éviter d’utiliser une classe “last”.
Pseudo-classe :after et la propriété content
Si vous survolez un paragraphe, le label passe en bleu et une flèche » est rajoutée à la suite du label.

Pseudo-classe :target
L’utilisation de la pseudo-classe :target se fait en utilisation les ancres HTML.
Par exemple, en cliquant sur le lien “#options”, ça fait apparaître le bloc id=”options”.
Et si je soumets le formulaire, je navigue vers “#finish” et un bloc vert apparaît tout en bas.
(NB : j’ai remplacé l’input “submit” par un simple lien, histoire de pouvoir afficher le bloc #finish. Le code normal est commenté dans le HTML si vous le voulez).
Enfin, si je clique sur “annuler”, je navigue vers “#start” et ça repart au début.

N’hésitez pas à utiliser mes codes HTML et CSS.
42 commentaires
Alban le 24 Mar à 10:44
Je ne connaissais pas du tout la propriété “content”.
Merci
¢lems le 24 Mar à 13:50
Et ça marche sous iE 6 ?
…pardon… (c’était la blague du mercredi)
Sinon c’est sympa ce que l’on peut faire mais attention à ne pas finir, comme à une certaine époque (pas si lointaine), avec des reflets web12.46 et des ombres portées dans tous les sens.
Jeremy le 24 Mar à 14:12
Sous IE6, c’est pas crade. Y a juste pas d’ombres, d’arrondis et de dégradés. Mais ces propriétés CSS3 c’est surtout pour embellir ton design facilement, tout en le gardant fonctionnel pour les vieux navigateurs.
Vincent Valentin le 24 Mar à 14:21
Hello,
C’est volontaire de ne pas avoir relié les labels aux champs ? Ou juste un petit oubli ?
mzwygart le 24 Mar à 14:42
Tu devrais attacher tes labels aux champs, car si on clique dessus, il ne se passe rien.
¢lems le 24 Mar à 15:00
Surtout au niveau poids de page ça doit être facile du simple au double. En terme de chargement de page les navigateurs ne peineront plus à charger des images en guise de contour ou d’ombres portées, c’est vrai que ça c’est un énorme plus.
Jeremy le 24 Mar à 15:22
@Vincent Valentin et @mzwygart : en fait, j’avais lié les labels aux champs au début (avec for=”xxx”, id=”xxx” et name=”xxx”) mais en validant le formulaire, ça renvoyait vers une 404.
Mais étant donné que j’ai supprimé l’input submit et mis un simple lien à la place, il est possible que l’erreur ne se reproduise plus. Je checke ça.
css3start.com, une homepage moderne | Hi, I'm Victor and this is my blog le 12 Apr à 16:48
[...] décidé de relever un petit défi après avoir lu l’article « Tutoriel : formulaire 100% CSS3 sans image et sans JavaScript » de l’excellent blog de Jeremy Thomas. J’ai trouvé sympathique l’idée de créer le [...]
Liens et actus le 13 Apr à 22:46
[...] formulaire 100% CSS 3 et sans images ni [...]
Tr3nT le 12 Jul à 05:12
petite question j’arrive pas à le placer correctement les élément ce divise et du coups je n’est plus mon formulaire en entier passe voir mon site tu verras à moins que d’ici quelques heures je trouve la solution.
Tr3nT le 12 Jul à 05:36
pas la peine j’ai compris =)))
TOTO le 11 Aug à 10:18
Très joli mais dommage qu’il ne fonctionne pas du tout sous IE8 (standard dans ma boite :’()
Tr3nT le 14 Aug à 22:49
maintenant ce qui va pas c’est le fait qu’il ne s’associe pas avec le code php … pour récup les info en bdd
nico le 25 Aug à 02:37
magnifique ! merci beaucoup et j’adore “les deux” formulaires de cette page !
Jireck le 10 Sep à 11:54
Bravo, …
Pascal le 23 Oct à 20:19
Magnifique ! Merci…
Medyo le 2 Nov à 01:21
Si seulement le CSS3 était compatible avec tous les navigateurs .
hornetbzz le 11 Nov à 11:22
Excellent
adelmonis le 14 Nov à 20:46
Quoi dire, SYMPA ! … et BRAVO ! …
BLOG SofiGraFiK - Toute l'actu SofiGraFiK le 14 Dec à 14:58
[...] amis web designer voici un petit tuto pour apprendre à faire un formulaire design sans utiliser d’images et sans utiliser de [...]
romeo le 18 Mar à 23:26
Salut a tous, je suiis un lycées de 1ere et moi et deux potes on a décidé de faire un site je me demandais si je pouvais reprendre le scrip d’incription pour notre site ?
merci
Jeremy le 20 Mar à 19:39
Bien sûr. C’est fait pour ça.
Top 10 CSS 3 forms tutorials / Weblog – Hans van Goor le 18 Apr à 17:50
[...] This tutorial is in French, but the result looks so good that I simply shouldn’t include it on that list. For those who can’t understand French, just get the source code and have fun with it.» View tutorial [...]
Top 10 CSS 3 forms tutorials | redbey le 24 Apr à 06:04
[...] This tutorial is in French, but the result looks so good that I simply shouldn’t include it on that list. For those who can’t understand French, just get the source code and have fun with it.» View tutorial [...]
[CSS3]10 CSS 3 forms tutorials | WPsharing le 26 Apr à 11:47
[...] This tutorial is in French, but the result looks so good that I simply shouldn’t include it on that list. For those who can’t understand French, just get the source code and have fun with it. » View tutorial [...]
Top 10 tutoriales formularios CSS3 | colorate le 27 Apr à 20:07
[...] Formulario CSS3 sin imagenes ni javascript [...]
Otto le 15 May à 22:19
Very nice tutorial, but where are the sources ?
Top 10 CSS 3 forms tutorials | BoonJack Media || We make Multimedia easy. le 18 May à 13:49
[...] This tutorial is in French, but the result looks so good that I simply shouldn’t include it on that list. For those who can’t understand French, just get the source code and have fun with it. » View tutorial [...]
streesh le 30 May à 14:45
Très cool mais peux tu nous donner les sources ?
thanks
Jeremy le 1 Jun à 09:58
@streesh : Ctrl + U
Top 10 CSS 3 forms tutorials | CatsWhoCode.com le 3 Jun à 11:23
[...] For those who can’t understand French, just get the source code and have fun with it. » View tutorialStylish Contact Form with HTML5 & CSS3 I really love what British web developer Chris Spooner [...]
entre graphisme et développement » Un petit formulaire en CSS3 le 21 Jun à 09:30
[...] français peuvent interpréter la CSS3, autant ne pas se gêner. Ainsi, vous pourrez trouver à cette adresse un petit explicatif sur les attributs CSS3 applicables aux formulaires. De cette manière, vous [...]
Nanang Gunawan le 1 Jul à 02:16
well done, anyway! is there any download link?
gab140 le 15 Jul à 10:12
@streesh, le css se trouve dans le code source de l’exemple fourni
Très beau formulaire, merci pour le code
Great New Hot jQuery HTML5 With CSS3 Form Tutorials le 24 Jul à 12:15
[...] 5. CSS3 form without images and JavaScript [...]
Topdam le 1 Aug à 14:48
Je ne comprends pas le morceau de css suivant :
form p:last-child {
margin-bottom:0;
}
et je n’arrive pas l’adapter à mon css … il ne sélectionne pas le dernier input.
110 Best CSS3 Tutorials and Examples | PriteshGupta.com le 1 Sep à 07:57
[...] CSS3 Form [...]
Jeune gay le 9 Sep à 18:19
excellent c’est vraiment très joli, je suis vraiment impressionné je vous le pique merci
10 jQuery CSS3 Form Tutorials | jQuery4u le 20 Oct à 10:06
[...] This tutorial is in French, but the result looks so good that I simply shouldn’t include it on that list. For those who can’t understand French, just get the source code and have fun with it. Source [...]
Lisa Zinninger le 7 Nov à 02:19
using to move between fields does not change the focus. the previously selected label stays blue, and the label for the field I tabbed to does not turn blue. I am sorry that I do not know how to tell you this in French.
Lisa Zinninger le 7 Nov à 02:19
I mean to say “using the tab key”
simo le 11 Nov à 10:22
slt tt le monde !
où pourrai-je récupérer le code ?
Merci