2010-08-11 20 views
11

Mam input znaczników tekstowych i tekstowych i label. Nie mogę odczytać kodu CSS, aby tekst etykiety był wyrównany tuż pod tekstem wejściowym. Oto fragment kodu HTML:Tekst etykiety CSS tuż pod elementem wejściowym

 

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

Próbuje:

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

etc, ze wszystkimi elementami.

+3

Być może rozumiem, że coś jest nie tak, ale czy próbowałeś wprowadzić

+3

Dlaczego po prostu nie umieścisz etykiety pod spodem? A skoro już o tym mowa, proszę przyjąć odpowiedzi na stare pytania. –

+1

Dla rekordu są to * elementy *, a nie znaczniki. – You

Odpowiedz

19

szybko przeniesiono na przykład, że działa:

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

mogłyby być lepsze, ale uważam, że czystsze niż obcych div s, a to obniża znacznie ładniejszy niż label -after- input -approach, gdy obsługa CSS jest nieobecna. Osobiście wolę zagnieżdżać input s w label s.

+0

rzeczywiście! http://jsfiddle.net/LjS9H/ – ina

+0

@ You Po co dodałeś 'relative' do' input'? – SIFE

+0

Aby umieścić elementy wejściowe nad etykietami bez przerywania struktury HTML. – You

3

Użyj tabeli (jedna para danych wejściowych/etykiety na komórkę) lub jednostek lewostronnych (jedna para danych wejściowych/etykiet na element div). Przykład:

<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

próbuje uniknąć używania kul stoły ...bez tableless css i wszystko, ale nie głupio go. urywek dla float, proszę? – ina

0

Ty może stosowanie czystego css, aby uzyskać to, aby osiągnąć to, co chcesz, ale to wymaga dużo adhoc pozycjonowania rzeczy, że jesteś lepiej nie robić.

Najprostszym sposobem jest umieszczenie na etykiecie pod wejściem na 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> 

Następnie można owinąć każdą parę wejścia/etykiety z div i ustawić div tak:

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

Następnie można umieścić

#sg1 label 
{ 
    float: right; 
} 

input 
{ 
    display:block; 
} 
+0

http://jsfiddle.net/mT9SP/ jest blisko - ale etykieta jest za daleko po prawej stronie. – ina

+0

http://jsfiddle.net/mT9SP/1/ Spójrz na to teraz: dodałem display: block into dane wejściowe –

1

Byłbyś zadanie dużo łatwiejsze owijając poszczególne pola (w tym przypadku, każde wejście/l abel pair) w div.

Powiązane problemy