2010-08-11 1 views
11

J'ai les balises input text et label. Je ne peux pas comprendre le CSS pour obtenir le texte d'étiquette à aligner juste en dessous du texte d'entrée. Voici un extrait du HTML:Texte de l'étiquette CSS juste en dessous de l'élément d'entrée

 

<form id="sg1"> 
    <label for="member1">member 1</label> 
    <input name="member1" id="member1" value="jack" /> 
    <label for="member2">member 2</label> 
    <input name="member2" id="member2" value="carter" /> 
    <label for="member3">member 3</label> 
    <input name="member3" id="member3" value="jackson" /> 
    <label for="member4">member 4</label> 
    <input name="member4" id="member4" value="tielk" />  
</form>​ 
 

Essayer d'obtenir:

 
[input box 1] [input box 2] 
     label 1   label 2 

etc, avec tous les éléments.

+3

Je peux comprendre quelque chose de mal, mais avez-vous essayé de mettre le

+3

Pourquoi ne mettez-vous pas simplement l'étiquette en dessous? Et pendant que vous y êtes, veuillez accepter quelques réponses à vos anciennes questions. –

+1

Pour l'anecdote, ce sont des * éléments *, pas des étiquettes. – You

Répondre

19

Un rapidement fouetté par exemple qui fonctionne:

input { 
 
    display: inline-block; 
 
    width: 6em; 
 
    position: relative; 
 
    top: -3em; 
 
} 
 

 
label { 
 
    display: inline-block; 
 
    width: 6em; 
 
    margin-right: .5em; 
 
    padding-top: 1.5em; 
 
}
<form id="sg1"> 
 
    <label>member 1 <input name="member1" id="member1" value="jack" /></label> 
 
    <label>member 2 <input name="member2" id="member2" value="carter" /></label> 
 
    <label>member 3 <input name="member3" id="member3" value="jackson" /></label> 
 
    <label>member 4 <input name="member4" id="member4" value="tielk" /></label> 
 
</form>​

pourrait être améliorée, mais je le trouve plus propre que div étrangers s, et il se dégrade beaucoup plus agréable que le label -after- input -approché lorsque le support CSS est absent. Personnellement, je préfère emboîter les input dans les label s de toute façon.

+0

en effet! http://jsfiddle.net/LjS9H/ – ina

+0

@You Pourquoi avez-vous ajouté 'relative' à' input'? – SIFE

+0

Pour positionner les éléments d'entrée au-dessus de leurs étiquettes sans modifier la structure HTML. – You

3

Utilisez une table (une paire d'entrées/étiquettes par cellule) ou des divs flottantes à gauche (une paire d'entrée/étiquette par div). Exemple:

<div class="pair"> 
    <input type="text" name="foo" value="bar" /><br /> 
    <label for="foo">shabba</label> 
</div> 
<div class="pair"> 
    … 
</div> 

CSS:

div.pair { 
    float:left; 
} 
+0

en essayant d'éviter d'utiliser la béquille de tables ...css sans tablier et tout, mais ne pas le gâcher. extrait pour le char, s'il vous plaît? – ina

0

Vous pouvez utiliser css pur pour obtenir ce pour obtenir ce que vous voulez, mais il faut beaucoup de choses de positionnement adhoc que vous êtes mieux de ne pas Faire.

La façon la plus simple est de mettre l'étiquette sous l'entrée sur le html:

<form id="sg1"> 
    <input name="member1" id="member1" value="jack" /> 
    <label for="member1">member 1</label> 
    <input name="member2" id="member2" value="carter" /> 
    <label for="member2">member 2</label> 
    <input name="member3" id="member3" value="jackson" /> 
    <label for="member3">member 3</label> 
    <input name="member4" id="member4" value="tielk" />  
    <label for="member4">member 4</label> 
</form> 

Ensuite, vous pouvez envelopper chaque paire d'entrée/étiquette avec un div, et régler la div comme ceci:

<form id="sg1"> 
    <div class="wrap"> 
     <input name="member1" id="member1" value="jack" /> 
     <label for="member1">member 1</label> 
    </div> 
    <div class="wrap"> 
     <input name="member2" id="member2" value="carter" /> 
     <label for="member2">member 2</label> 
    </div> 
    <div class="wrap"> 
     <input name="member3" id="member3" value="jackson" /> 
     <label for="member3">member 3</label> 
    </div> 
    <div class="wrap"> 
     <input name="member4" id="member4" value="tielk" />  
     <label for="member4">member 4</label> 
    </div> 
</form> 

#sg1 div 
{ 
    clear: both; 
    float: left; 
} 

Ensuite, vous pouvez mettre

#sg1 label 
{ 
    float: right; 
} 

input 
{ 
    display:block; 
} 
+0

http://jsfiddle.net/mT9SP/ c'est proche - mais l'étiquette est trop à droite .. – ina

+0

http://jsfiddle.net/mT9SP/1/ Regardez-le maintenant: j'ai ajouté un affichage: bloc dans l'entrée –

1

tu ferais le travail beaucoup plus facile en enveloppant chaque champ (dans ce cas, chaque entrée/l abel pair) dans un div.

Questions connexes