Ok, wydaje się, że nie można tego naprawić. Mam pole tekstowe i pole wyboru. Chcę, aby miały dokładnie tę samą szerokość, aby były wyrównane na lewym i prawym marginesie.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
</select>
</body>
</html>
Tak myślisz, prawda? Nie. W przeglądarce Firefox pole wyboru jest o 6 pikseli krótsze. Zobacz zrzut ekranu.
Ok, więc edytujmy kod i stwórzmy dwa style.
<style type="text/css">
input {
width: 200px;
}
select {
width: 206px;
}
</style>
Ok, to działa!
Och, czekaj, lepszy test w Chrome ...
Czy ktoś może mi powiedzieć, jak to ustawić we wszystkich przeglądarkach? Dlaczego nie mogę po prostu zrobić width: 200px na wszystkich, dlaczego wszystkie przeglądarki wyświetlają to inaczej? Skoro już o tym mowa, dlaczego pole tekstowe i pole wyboru mają różne wysokości? Jak doprowadzić je do tej samej wysokości? Próbowałem wysokości i wysokości linii bezskutecznie.
Rozwiązanie:
Ok, znalazłem rozwiązanie z pomocą poniższych odpowiedzi. Kluczem jest użycie właściwości box-sizing: border-box, aby określić szerokość obejmującą obramowanie i dopełnienie. Zobacz doskonałe wyjaśnienie tutaj . Wtedy przeglądarka nie może tego zapchać.
Kod znajduje się poniżej, ustawiliśmy również wysokość pól na ten sam rozmiar i wcięliśmy tekst w polu, aby był wyrównany. Musisz także ustawić obramowanie, ponieważ Chrome ma naprawdę dziwnie wyglądającą ramkę, której używa do zaznaczania pól, które wyrzucą wyrównanie. Będzie to działać w przypadku witryn HTML5 (np. Obsługujących IE9, Firefox, Chrome, Safari, Opera itp.).
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
border: 1px solid #000;
padding: 0;
margin: 0;
height: 22px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
input {
text-indent: 4px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
<option>123456789 123123123123</option>
<option>123456789 123123123123 134213721381212</option>
</select>
</body>
</html>
Tylko ostatnie ostrzeżenie, możesz nie chcieć, aby przyciski wprowadzania, pola wyboru itp. Były uwzględnione w tym stylu, więc użyj, input:not([type='button'])
aby nie stosować go do niektórych typów lub użyj input[type='text'], input[type='password']
do określenia tych, do których chcesz zastosować.