W formularzu mam jedno pole wyboru i dwa pola wejściowe. Te elementy są wyrównane w pionie. Niestety nie mogę uzyskać jednakowej szerokości tych elementów.
Oto mój kod:
<select name="name1" style="width:198px">
<option>value1</option>
<option>value2</option>
</select><br/>
<input type="text" name="id1" style="width:193px"><br/>
<input type="text" name="id2" style="width:193px">
Dla powyższego przykładu najlepsza szerokość wybranego elementu to 198 lub 199 px (oczywiście próbowałem 193px, ale różnica jest duża). Myślę, że zależy to od rozdzielczości, na różnych komputerach i przeglądarkach, ponieważ te elementy nie mają równych szerokości (czasami wydaje mi się, że różnica wynosi około 1 lub 2 piksele). Próbowałem ustawić te elementy w wierszach div lub tabeli, ale to nie pomaga.
P: Jak mogę uzyskać dokładnie taką samą szerokość tych elementów?
html
css
html-select
border-box
luk4443
źródło
źródło
Odpowiedzi:
Zaktualizowana odpowiedź
Oto jak zmienić model pola używany przez elementy input / textarea / select, aby wszystkie zachowywały się w ten sam sposób. Musisz użyć
box-sizing
właściwości, która jest zaimplementowana z prefiksem dla każdej przeglądarkiOznacza to, że wspomniana wcześniej różnica 2px nie istnieje.
przykład pod adresem http://www.jsfiddle.net/gaby/WaxTS/5/
uwaga: w IE działa od wersji 8 i nowszych.
Oryginalny
jeśli zresetować swoje granice wtedy
select
elementem będzie zawsze mniej niż 2 pikseli zinput
elementami ..przykład: http://www.jsfiddle.net/gaby/WaxTS/2/
źródło
Wypróbowałem odpowiedź Gaby (+1) powyżej, ale to tylko częściowo rozwiązało mój problem. Zamiast tego użyłem następującego CSS, w którym content-box został zmieniony na border-box:
źródło
box-sizing: border-box
. Aby uzyskać dobrą uniwersalną implementację, rozważ ustawienie elementu HTML najwyższego poziomu, a następnie dziedziczenie w dół, aby można go było łatwo zastąpić.Dodaj ten kod w css:
źródło
utwórz kolejną klasę i powiększ rozmiar o przykład 2px
źródło