2010-08-11 9 views
11

Ich habe input Text und label Tags. Ich kann das CSS nicht herausfinden, um den Beschriftungstext direkt unter dem Eingabetext auszurichten. Hier ist ein Ausschnitt des HTML:CSS-Etikett Text direkt unter Eingabeelement

 

<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>​ 
 

Der Versuch, zu erhalten:

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

etc, mit allen Elementen.

+3

Ich könnte sein, etwas falsch zu verstehen, aber haben Sie versucht, die

+3

Warum legen Sie nicht einfach das Etikett darunter? Und wenn Sie schon dabei sind, akzeptieren Sie bitte einige Antworten auf Ihre alten Fragen. –

+1

Für den Datensatz sind sie * Elemente *, keine Tags. – You

Antwort

19

Ein schnell Beispiel Schlagsahne, das funktioniert:

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>​

verbessert werden könnte, aber ich finde es sauberer als Fremd div s, und es verschlechtert sich viel schöner als das label -after- input - Ansatz, wenn CSS-Unterstützung nicht vorhanden ist. Persönlich bevorzuge ich es, die input s in der label s trotzdem zu verschachteln.

+0

in der Tat! http://jsfiddle.net/LjS9H/ – ina

+0

@You Warum haben Sie 'relativ' zu' input' hinzugefügt? – SIFE

+0

Um die Eingabeelemente über ihre Beschriftungen zu positionieren, ohne die HTML-Struktur zu ändern. – You

3

verwenden um eine Tabelle (ein Eingang/label Paar pro Zelle) oder links floating divs (ein Eingang/label Paar pro div). Beispiel:

<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

versuchen, die Krücke der Tabellen zu vermeiden ...tabless css und alle, aber nicht groking es. Schnipsel für den Schwimmer, bitte? – ina

0

Sie können Verwendung reiner CSS diese zu bekommen, um zu erreichen, was Sie wollen, aber es erfordert eine Menge adhoc Positionierung Sachen, die Sie besser sind weg nicht tun.

Der einfachste Weg ist das Etikett unter dem Eingang auf der html setzen:

<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> 

Dann können Sie jede Eingabe/label Paar mit einem div wickeln, und stellen Sie die div wie so:

<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; 
} 

Als nächstes können Sie

#sg1 label 
{ 
    float: right; 
} 

input 
{ 
    display:block; 
} 
+0

http://jsfiddle.net/mT9SP/ das ist in der Nähe - aber das Etikett ist zu weit rechts .. – ina

+0

http://jsfiddle.net/mT9SP/1/ Schau es jetzt: Ich fügte ein Display: Block in der Eingang –

1

setzen Sie den Job (in diesem Fall viel einfacher, indem Sie jedes Feld machen würde Einwickeln, jede Eingabe/l abel Paar) in einem div.

Verwandte Themen