Próbuję pozwolić, aby <input type="text">
(odtąd określany jako "pole tekstowe") wypełnił kontener nadrzędny za pomocą ustawień: width
do 100%
. Działa to dopóki nie nadam polu tekstowemu wypełnienia. Zostanie to dodane do szerokości zawartości i przepełnienia pola wejściowego. Zauważ, że w Firefoksie dzieje się tak tylko przy renderowaniu treści jako zgodnych ze standardami. W trybie dziwactwa wydaje się, że zastosowanie ma inny model pudełkowy.CSS: Pole tekstowe do wypełnienia kontenera nadrzędnego
Oto minimalny kod odtwarzający zachowanie we wszystkich nowoczesnych przeglądarkach.
#x {
background: salmon;
padding: 1em;
}
#y, input {
background: red;
padding: 0 20px;
width: 100%;
}
<div id="x">
<div id="y">x</div>
<input type="text"/>
</div>
moje pytanie: Jak uzyskać pole tekstowe, aby pasował do kontenera?
Wskazówka: dla <div id="y">
, to jest bardzo proste: wystarczy ustawić width: auto
. Jeśli jednak spróbuję zrobić to dla pola tekstowego, efekt jest inny, a pole tekstowe przyjmuje domyślną liczbę wierszy jako szerokość (nawet jeśli ustawię display: block
dla pola tekstowego).
/EDYCJA: "Rozwiązanie" Davida oczywiście działałoby. Nie chcę jednak modyfikować kodu HTML - szczególnie nie chcę dodawać fałszywych elementów bez semantycznej funkcjonalności. Jest to typowy przypadek divitis, którego chcę uniknąć za wszelką cenę. To może być tylko hakowanie w ostateczności.
co z negatywnym wypełnieniem? jeśli margines ujemny nie działa. Czy możesz mieć nawet negatywne wypełnienie? – Sekhat