43 votes

Système de grille CSS pour les formulaires (multi-colonnes)

Pour référence future, voici le résultat final avec une précision au pixel près :

fluid CSS form

Le code CSS :

._25 {
    width: 21%;
    display: inline;
    float: left;
    margin-left: 2%;
    margin-right: 2%;
}
._50 {
    width: 46%;
    display: inline;
    float: left;
    margin-left: 2%;
    margin-right: 2%;
}
._75 {
    width: 71%;
    display: inline;
    float: left;
    margin-left: 2%;
    margin-right: 2%;
}
._100 {
    width: 96%;
    display: inline;
    float: left;
    margin-left: 2%;
    margin-right: 2%;
}
label {
    width: 100%;
}
input {
    border: 1px solid #B3B3B3;
    width: 100%;
    -moz-border-radius: 3px;
}
textarea {
    border: 1px solid #B3B3B3;
    width: 100%;
    -moz-border-radius: 3px;
}
select {
    border: 1px solid #B3B3B3;
    width: 100%;
    -moz-border-radius: 3px;
}

Et quelques exemples de code HTML :

<div class="_50">
    <p><label for="in_user">Username</label><input id="in_user" type="text" value=""/></p>
</div>

<div class="_50">
    <p><label for="in_pass">Password</label><input id="in_pass" type="text" value=""/></p>
</div>

Récemment, j'ai commencé à utiliser les systèmes de grille CSS et je trouve le processus de conception d'une page Web beaucoup plus simple. J'essaie maintenant de styliser des éléments de formulaire, mais J'ai beaucoup de mal à créer des formulaires avec des colonnes. Prenons l'exemple suivant :

  • div (largeur = 400px)
    • formulaire
      • ul
        • li .half
          • étiquette
          • entrée (devrait être de 200px de large)
        • li .half
          • une autre étiquette
          • une autre entrée (qui doit également avoir une largeur de 200px)

En fait, j'applique une classe dont l'attribut de largeur est de 50 %, mais si je mets les deux entrées côte à côte, la ligne est plus grande que 100 % (400px). les bordures, les marges et les paddings .

mockup of what I'm trying to achieve

Existe-t-il un système de grille CSS que je puisse utiliser pour créer des formulaires à plusieurs colonnes tout en veillant à ce que tous les éléments du formulaire aient la même taille ? (entrées, sélections et zones de texte) ; par exemple, une entrée dans une colonne doit avoir 400px, tandis que deux colonnes doivent avoir 200px chacune.

EDIT : Wufoo a algunos exemples de ce que j'essaie de faire, mais je suis trop ignorant en matière de CSS pour comprendre tout ce code et j'apprécierais que quelqu'un puisse me donner quelques conseils.

0 votes

Regarde ça : noupe.com/design/ultimate-guide-to-grid-based-web-design.html il y a tout ce que vous devez savoir, y compris l'api css et les modèles.

11 votes

Essayez-vous de réinventer la table ? Si oui, il y a un élément pour cela ;-) Il y a des moments où une table est le bon choix pour le travail.

24 votes

@scunliffe "Il y a des moments où un tableau est le bon choix pour le travail" Oui, et c'est pour présenter des informations tabulaires :).

1voto

Nate B Points 4968

Je pense que c'est ce que vous recherchez :

http://www.alistapart.com/articles/prettyaccessibleforms/

Cela devrait aider à simplifier un peu votre structure. Il ne décrit pas explicitement comment créer des formulaires à colonnes multiples, mais la technique pourrait probablement s'étendre à cela avec un peu de créativité de votre part.

0 votes

"...avec un peu de créativité de votre part" c'est exactement la partie qui me pose problème. =||

0 votes

Eh bien, à première vue (je n'ai pas essayé), j'imagine que vous pourriez utiliser la méthode décrite dans l'article (les ensembles de champs renfermant un système de listes, d'étiquettes et de champs), mais en enfermant le tout dans un div flottant à gauche et de largeur fixe. Ensuite, créez-en une autre et faites-la flotter également, afin d'avoir deux colonnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X