Powiedzmy, że mam taki fragment HTML:
<div style="width:300px;">
<label for="MyInput">label text</label>
<input type="text" id="MyInput" />
</div>
To nie jest mój dokładny kod, ale ważne jest, aby w tym samym wierszu w kontenerze o stałej szerokości była etykieta i tekst. Jak mogę stylizować dane wejściowe, aby wypełnić pozostałą szerokość pojemnika bez zawijania i bez znajomości rozmiaru etykiety?
Odpowiedzi:
tak jak wszyscy nienawidzą tabel za układ, pomagają przy takich rzeczach, używając jawnych znaczników tabeli lub display: komórka tabeli
źródło
Oto proste i czyste rozwiązanie bez użycia skryptów JavaScript i modyfikacji układu tabeli. Jest podobny do tej odpowiedzi: Wpisz tekst auto szerokość wypełniając 100% z innymi elementami pływającymi
Ważne jest, aby owinąć pole wejściowe rozpiętością, która jest
display:block
. Następną rzeczą jest to, że przycisk musi być pierwszy, a pole wprowadzania drugie.Następnie możesz przesunąć przycisk w prawo, a pole wejściowe wypełni pozostałe miejsce.
Proste skrzypce: http://jsfiddle.net/v7YTT/90/
Aktualizacja 1: jeśli Twoja witryna jest skierowana tylko do nowoczesnych przeglądarek, sugeruję użycie elastycznych skrzynek . Tutaj możesz zobaczyć aktualne wsparcie .
Aktualizacja 2: Działa to nawet z wieloma przyciskami lub innymi elementami, które w pełni współdzielą się z polem wejściowym. Oto przykład .
źródło
Sugeruję użycie Flexbox:
Pamiętaj jednak, aby dodać odpowiednie prefiksy dostawcy!
źródło
label
? Byłbym szczególnie zainteresowany tym, w jaki sposób HTML z oryginalnego pytania mógłby zostać ułożony za pomocąborder-box
...flex: 2
nieflex: 1
?Użyj do tego Flexboksa. Masz pojemnik, który będzie zginał swoje dzieci w rzędzie. Pierwsze dziecko zajmuje miejsce w razie potrzeby. Drugi wygina się, aby zabrać całą pozostałą przestrzeń:
źródło
row
domyślnie, nie musisz go określać.Najłatwiejszym sposobem na osiągnięcie tego byłoby:
CSS:
HTML:
Wygląda jak: http://jsfiddle.net/JwfRX/
źródło
Bardzo łatwą sztuczką jest użycie
CSS calc
formuły. Wszystkie nowoczesne przeglądarki, IE9, szeroka gama przeglądarek mobilnych powinny to obsługiwać.źródło
możesz spróbować:
źródło
Jeśli używasz Bootstrap 4:
Jeszcze lepiej, użyj tego, co jest wbudowane w Bootstrap:
https://jsfiddle.net/nap1ykbr/
źródło