2011-07-15 29 views
7

Próbuję mieć pole wprowadzania płynu o szerokości 100%, a etykieta powinna znajdować się po lewej stronie. Oto, co aktualnie mam:Pole wejściowe o szerokości 100%, z etykietą po lewej stronie

.left { 
    float: left; 
} 

input { 
    width: 100%; 
} 

<form> 
    <label class="left">Name:</label> 
    <input class="left" id="name" name="name"/> 
    <div class="clear"></div> 
</form> 

Działa to, jednak spada poniżej etykiety. Jeśli użyję elementu nadrzędnego div, aby przypisać wartości zmiennoprzecinkowe, to nie będzie on wynosił 100%. Jakieś pomysły?

Dziękujemy!

+3

Czego próbujesz robić? Czy próbujesz uzyskać pole wejściowe i etykietę na tej samej linii? Jeśli masz pole wprowadzania 100% szerokości kontenera, nie ma miejsca na etykietę na tej samej linii, więc byłoby to niemożliwe. – Will

Odpowiedz

23

Patrz:http://jsfiddle.net/r2769/(zmiana rozmiaru okna)

CSS:

.left { 
    float: left; 
} 

.left2 { 
    overflow: hidden; 
    display: block; 
    padding: 0 4px 0 10px 
} 
.left2 input { 
    width: 100% 
} 

HTML:

<form> 
    <label class="left" for="name">Name:</label> 
    <span class="left2"><input id="name" name="name" /></span> 
</form> 

Wyjaśnienie metody is here.

+0

+1 Widzę, że ta sztuczka coraz częściej dotyczy ...;) – NGLN

+0

Taa, to naprawdę bardzo przydatne :) – thirtydot

+0

Thx za inteligentny pomysł zilustrowany na ładnym jsfiddle. – chikamichi

3

Niedawno dowiedziałem się o Calc w CSS:

width: calc(100% - 100px); 

to może być wykorzystane, aby rozwiązać ten problem: jsfiddle here

HTML:

<div class="setting"> 
    label 
    <input class="s2"/> 
</div> 

CSS:

.setting { 
    position: relative; 
    width: 100%; 
} 
.setting .s2 { 
    position: absolute; 
    left: 180px; 
    width: calc(100% - 184px); 
} 
+0

działa, ale nie jest obsługiwany we wszystkich nowoczesnych przeglądarkach (3 wersje z powrotem). Przerwy, w szczególności w Safari 5 –

Powiązane problemy