Rechercher : dans
Par :

[CSS] alignement label/input

Dernière réponse le 5 fév 2008 à 17:00:33 Miloute, le 5 fév 2008 à 10:20:23 
 Signaler ce message aux modérateurs

Bonjour,

Je suis débutante en programmation, et je suis en train de réaliser un formulaire. Par contre, j'ai des problèmes au niveau du rendu...
Mes labels font parfois plusieurs lignes et mes input (ou select) se retrouvent alors n'importe où. Serait-il possible, via CSS de s'arranger pour que les input/select se trouvent toujours au milieu par rapport au label (voir schéma) ?

--------------------------------
|                                         |
| label1: input1/select1      |
|                                         |
| label2 sur                        |
| plusieurs: input2/select2 |
| lignes                               |
|                                         |
|            | OK |                     |
|--------------------------------


Voici comment j'ai construit mon formulaire:
<form id=monForm action="page2.php" method=POST>
    <fieldset>
   <!-- constrution similaire pour les autres types d'input et les select -->
    <p>
        <label for="form_prenom">Prenom: </label> 
        <input type="text" id="form_prenom" name="prenom" />
    </p>
...


Merci.
Configuration: Linux
Epiphany 2.20

Meilleures réponses pour « [CSS] alignement label/input » dans :
Javascript - Centrer verticalement une page web VoirPour centrer verticalement une page web, impossible de s'en sortir en css. Une solution bien pratique : JavaScript. 1. Le fichier .js 2. La page .html 3. Utilisation 4. Inconvénients 5. Rappel Merci à Dalida pour la source du fichier...
[CSS] Créer facilement des CSS VoirUn outil très facile d'utilisation pour créer des CSS, avec un aperçu en direct de ce que vous créez : TopStyle. La version Lite est gratuite. http://www.topstyle4.com/
Les CSS pour présenter vos images VoirPour présenter agréablement vos images, vous pouvez intégrer quelques codes supplémentaires dans votre CSS et vous en servir à bon escient. Elles sont bien sur modulables en fonction de la charte graphique de votre site. Utilisation Mettez les codes...
Télécharger CD Label Designer VoirSi vous avez des fichiers MP3 que vous ne savez plus quoi en faire, alors mettez les sur Cd et créer leur des pochettes. CD Label Designer est une application de conception et d’impression de couvertures pour boites de CD, ainsi que des...
Les classes de style (CSS) VoirLes classes et les ID Les classes Il peut s'avérer intéressant d'affecter des styles différents à des mêmes balises. Pour cela les spécifications CSS ont introduit le concept de classe. La définition des classes est aussi simple que celles des...
Feuilles de style - CSS VoirPrésentation des feuilles de style Le concept de feuilles de style est apparu en 1996 avec la publication par le W3C d'une nouvelle recommandation intitulée « Cascading StyleSheets » (feuilles de style en cascade), notée CSS. Le principe des...
CSS - Les couleurs VoirLes couleurs Le standard CSS propose différentes façons de définir des couleurs : par un nom avec la notation hexadécimale avec la notation décimale Appel d'une couleur par son nom Le langage HTML définit des noms pour un nombre limité de...

1

Olimix, le 5 fév 2008 à 10:24:11

Salut !
si j'était toi j'enleverai les label et je les remplacerrai par des div , je trouve que c'est carrément plus simple a géréer étant donné quon a pas le PB des label qui prenne 2 lignes .

Répondre à Olimix

2

Dalida, le 5 fév 2008 à 10:31:15
  • +1

Salut,

à tester :
définir la hauteur de ligne du paragraphe et lui appliquer un alignement vertical (comme input est rendu en ligne il devrait s'aligner mais c'est vraiment pas sûr…).

p
{
line-heigth:4em;
vertical-align:center;
}

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

3

Miloute, le 5 fév 2008 à 10:32:34

Merci!
Par contre je ne suis pas sûre de bien comprendre... comment puis-je insérer un label si j'enlève la balise ?

Répondre à Miloute

4

Scalpweb, le 5 fév 2008 à 10:34:11

Voici comment je construit mes formulaires la plupart du temps :

<form id=monForm action="page2.php" method=POST>
<div>
  <div style="float: left;">Prenom :</div>
  <div style="padding-left: 150px;"><input type="text" id="form_prenom" name="prenom" /></div>

  <div style="float: left;">Nom :</div>
  <div style="padding-left: 150px;"><input type="text" id="form_nom" name="nom" /></div>
</div>


A toi ensuite de modifier le 150px par la valeur qui convient.

Une autre technique consiste à mettre le tout dans des tableaux, c'est très pratiques :
<table><tbody>
	<tr>
		<td style="width: 160px;">Nom:</td>
		<td valign="top">
			<input type="text" id="form_nom" name="nom" />
		</td>
	</tr>
	<tr>
		<td style="width: 160px;">Prenom :</td>
		<td valign="top">
			input type="text" id="form_prenom" name="prenom" />
		</td>
	</tr>
</tbody></table>


Là, il te suffit de modifier le valign="top" en valign="middle" si tu le désires.

Voilà,
@+

Répondre à Scalpweb

5

Miloute, le 5 fév 2008 à 10:46:14

Merci je vais essayer de faire quelque chose avec ça!
Par contre, je croyais que depuis l'apparation des CSS, les tableaux ne devaient pas être utilisé pour faire de la mise en page ?

Répondre à Miloute

6

Dalida, le 5 fév 2008 à 10:46:29
  • +1

Re,

je viens de tester, ma solution fonctionne.

p
{
line-height:4em;
vertical-align:middle;
}

par ailleurs les tableaux ne sont pas censés servir à la mise en page et les <div> sont moins corrects que les <label>.

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

7

Miloute, le 5 fév 2008 à 10:48:09

Merci. Ta solution me semble plus simple à mettre en oeuvre. Je vais déjà essayer cela!

Répondre à Miloute

8

Miloute, le 5 fév 2008 à 10:56:28

En fait ça ne semble marcher que partiellement, si je change line-height (par exemple 2em), alors l'alignement n'est plus correct. Par ailleurs lorsque mes labels font deux lignes, cela ne semble plus faire d'effet :-?

Répondre à Miloute

9

Miloute, le 5 fév 2008 à 11:02:42

Le cas échéant, serait-il possible de fixer une hauteur minimale pour un label ?

Répondre à Miloute

11

Dalida, le 5 fév 2008 à 11:29:02

Oui, il existe la propriété {min-height} mais bien évidement elle n'est pas appliquée par IE…

je ne comprends pas bien ce que tu veux mais pense que tu peux aussi jouer sur la structure HTML en mettant le <input> à l'intérieur ou à la suite de <label>, ce qui donne un comportement différent pour le rendu.

<p>
	<label>
		<input />
	</label>
</p>
<!-- ou -->
<p>
	<label></label>
	<input />
</p>


[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

10

Scalpweb, le 5 fév 2008 à 11:07:52

Je sais bien que le W3C déconseille la mise en page en tableau.

Cependant, dans certains cas, il faut bien avouer qu'on gagne du temps à le faire ainsi.

Si non, tu peux reprendre ma première solution et essayer d'ajouter un vertical-align:middle; sur le Div contenant les Input.

Et tu peux aussi très bien reprendre cette solution en changeant la première div par un label mais en lui appliquant le même CSS...

Répondre à Scalpweb

12

Miloute, le 5 fév 2008 à 12:44:05

Ce que je voudrais faire, c'et avoir mes labels sur un fond d'une certaine couleur et mes input/select sur le fond normal de ma page.
C'est difficile à expliquer clairement... j'espère que c'est plus ou moins compréhensible...

----------------------------------------
                            MON LABEL.    |  MON INPUT_TEXT, INPUT_RADIO ou SELECT
----------------------------------------
----------------------------------------
                           MON LABEL2.    |  MON INPUT_TEXT, INPUT_RADIO ou SELECT
----------------------------------------
----------------------------------------
                           MON LABEL2.    |
                      qui prend plusieurs |  MON INPUT_TEXT, INPUT_RADIO ou SELECT
                                   LIGNE         |
----------------------------------------

Répondre à Miloute

13

Scalpweb, le 5 fév 2008 à 13:38:02

Ceci me parait correspondre tout à fait :

<label for="nom" style="background: red; float: left;">Nom : </label>
<div ><input type="text" name="nom" /></div>
<label for="nom" style="background: red; float: left;">Nom : </label>
<div ><input type="text" name="nom" /></div>
<label for="nom" style="background: red; float: left;">Nom : </label>
<div ><input type="text" name="nom" /></div>
<label for="nom" style="background: red; float: left;">Nom : </label>
<div ><input type="text" name="nom" /></div>


Je l'ai copier coller plusieurs fois pour te donner un aperçu.

Répondre à Scalpweb

14

Dalida, le 5 fév 2008 à 14:23:47

Ce qui mets le bronx pour l'alignement vertical c'est le <input> sur plusieurs lignes.

j'ai trouvé une solution qui me parait honnête mais bien évidement IE ne sait pas le traiter.
j'ai ajouté des <div> qui permettent un affichage semblable. il y a des espacements inexpliqués mais en faisant une fausse colonne sur les <div> ou le <form> ça doit pouvoir se masquer.

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

15

Miloute, le 5 fév 2008 à 14:59:55

Le problème de cette solution, c'est quelle implique de savoir si le label fera effectivement plusieurs lignes, ce qui peut varier suivant les résolutions, navigateurs, taille de fontes, ...

Répondre à Miloute

16

Scalpweb, le 5 fév 2008 à 15:01:49

Bon, ben moi je te reconseilles un tableau...

Ce serait déjà fini ;-)

Je fais ce que je peux pour respecter les normes W3C, mais des fois il vaut mieux passer outre.

Répondre à Scalpweb

17

Miloute, le 5 fév 2008 à 15:11:00

Je crois que je vais suivre ton conseil Scalpweb... parce que là ce que je fais ça s'apparente plus à du bricolage qu'à autre chose...

Répondre à Miloute

18

Scalpweb, le 5 fév 2008 à 15:12:04

:-)

Pense à passer ce post en tant que sujet Résolu...

Répondre à Scalpweb

19

Miloute, le 5 fév 2008 à 16:29:20

Je fais ça comment?

Répondre à Miloute

20

Scalpweb, le 5 fév 2008 à 16:30:21
  • +1

Ba tu réponds, et tu coches "Résolu", en bas de la zone ou tu tapes ton message.

Répondre à Scalpweb
Collection CommentÇaMarche.net