Formulaire css sans tableau

27 février 2008 – 7:44

La présentation des formulaires est souvent synonyme de casse tête. Réussir à positionner l’ensemble de ces éléments est souvent obtenu au détriment des standards. Cet article va vous présenter une manière de parvenir à vos fins, tout en respectant les normes du W3C.

Fieldset, legend et label : des balises qui gagneraient à être connues

En dehors des élements FORM, INPUT, TEXTAREA, SELECT, il existe des balises html méconnues :

Label : Cet élément permet de légender un élément de saisie, sans sa présence, des personnes malvoyantes ne pourraient pas le remplir.

Fieldset : il permet de séparer le formulaire en groupes distincts, par exemple une première partie concernera la civilité, la seconde l’adresse.

Legend : il va de pair avec le fieldset, celui-ci servira à décrire le contenu du groupe d’éléments.

Maintenant que les présentations sont faites, entrons dans le vif du sujet, le code html du formulaire.

La première mouture, réalisée sans trucage et sans CSS ne donne pas très envie, nous allons y remédier très bientôt.

Code html du formaire :

formulaire-sans-css.gif

 

  1. <legend>Civilité</legend>
  2.         <li>Civilité
  3. <select name=“civilite” id=“civilite”>        <option value=“1″>Monsieur</option>                                    <option value=“2″>Madame</option>                      <option value=“3″>Mademoiselle</option>                   </select></li>
  4.         <li><label>Nom : </label>
  5. <input name=“nom” /></li>
  6.         <li><label>Prénom</label>
  7. <input name=“prenom” /></li>
  8.         <li><label>Nom de jeune fille</label>
  9. <input name=“nomjf” /></li>
  10. </ul>
  11. </fieldset>
  12. <legend>Coordonées</legend>
  13.         <li><label>N° et rue</label>
  14. <input name=“voie” /></li>
  15.         <li><label>complément d’adresse</label>
  16. <input name=“cmplvoie” /></li>
  17.         <li><label>Code postal</label>
  18. <input name=“codepostal” /></li>
  19.         <li><label>ville</label>
  20. <input name=“ville” /></li>
  21.         <li> <input value=“Valider” type=“submit” /></li>
  22. </ul>
  23. </fieldset>
  24. </form>

L’utilisation des balises <li> (affichage par block) nous permet de positionner les éléments au dessous des autres et non inline (”À la queue leu leu”). Les puces ne sont pas très jolies, ni utiles, nous allons donc les cacher avec

  1. form{
  2. width:450px ;
  3. }
  4. li{
  5. list-style-type : none ;
  6. clear:both ;
  7. line-height:25px ;
  8. }
  9. body{
  10. font-family :<span class=“code-quote”>“Trebuchet MS”</span>,Verdana,Geneva,Arial,Helvetica,sans-serif ;
  11. font-size:small ;
  12. margin:2em 1% ;
  13. padding:0 ;
  14. }
  15. label{
  16. display:block ;
  17. <span class=“code-object”>float</span>:left ;
  18. width:140px ;
  19. }
  20. input, select{
  21. display:block ;
  22. <span class=“code-object”>float</span>:left ;
  23. width:200px ;
  24. }
  25. #submit{
  26. margin-right:42px ;
  27. <span class=“code-object”>float</span>:right ;
  28. width:75px ;
  29. border:1px solid black ;
  30. }

L’astuce pour afficher correctement les label et les input c’est de les déclarer en display:block afin de pouvoir leur attribuer une width float left permet de les afficher les uns à cotés des autres, et le fait de positionner un clear:both sur les li permet de repartir au début de la ligne après chaque balise ouvrant li
formulaire-avec-css-sans-tableau.gif

Bon, ca n’est pas très sexy, mais je vous invite à les modifier selon vos goûts via le zip fourni
formulaire-css-sans-tableaurar.zip

Post a Comment