Почему Chrome, Firefox и IE по-разному отображают элементы управления SELECT фиксированной ширины?
-
02-07-2019 - |
Вопрос
Я выпадение волос на этом...кажется, что когда я фиксирую ширину элемента управления HTML SELECT, он отображает свою ширину по-разному в зависимости от браузера.
Есть идеи, как стандартизировать это, не обращаясь к нескольким таблицам стилей?
Вот с чем я работаю:
.combo
{
padding: 2px;
width: 200px;
}
.text
{
padding: 2px;
width: 200px;
}
Это мой тип документа для страницы:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Решение
Элементы управления формой всегда будут менее послушны попыткам стилизации, в частности выборам и вводу файлов, поэтому единственный способ надежно стилизовать их в кросс-браузерном режиме и с учетом будущего — это заменить их на JavaScript или Flash и имитировать их функциональность.
Другие советы
Попробуйте установить font-size
и на выборках, это может повлиять на их отображение.Также рассмотрите min-width
и max-width
характеристики.
input [type = text], выберите {Border:сплошной 1 пиксель #c2c1c1;ширина:150 пикселей;дополнение:2 пикселя;}
// затем
Выберите {ширина:156 пикселей;// необходимо вводить [type = text] ширина + (граница и накладная)}}}
/* Вход [type = text] width = ширина + накладка + граница
Ширина выбора просто равна ширине.Отступы и границы отображаются внутри этого ограничения ширины.Именно так работает SELECT...
*/
Обязательно удалите все поля и отступы по умолчанию и определите их явно.Убедитесь, что вы используете правильный DOCTYPE и, следовательно, отображаете IE в стандартном режиме.
Вы можете использовать поддельный виджет раскрывающегося списка и заменить SELECT.
Браузеры имеют тенденцию ограничивать количество стилей элементов управления формы с помощью CSS, поскольку элементы управления формой имеют множество сложных стилей, которые различаются в зависимости от операционной системы.CSS не может описать это полностью, поэтому браузеры отключают некоторые из них.
Эрик Мейер написал хорошую статью на эту тему:
http://meyerweb.com/eric/ Thoughts/2007/05/15/formal-weirdness/
Лучшее, что вы можете сделать, — это признать, что у вас нет полного контроля над внешним видом полей формы, и поэкспериментировать с тем стилем, который действительно важен.
Попробуйте использовать поджигатель или функцию Chrome «Проверить элемент» (щелкните правой кнопкой мыши элемент управления выбора, выберите «Проверить элемент»), чтобы точно узнать, какие свойства стиля наследуются/отрисовываются для этого конкретного объекта.Это должно привести вас в правильном направлении.
Я попробовал все эти предложения...и наконец он у меня есть, поэтому он хорошо выглядит в IE и Firefox.Похоже, что-то не так с заполнением элемента управления SELECT.Если я увеличу ширину SELECT на 2 пикселя, размер теперь будет правильным.
.combo
{
padding: 2px;
width: 206px;
}
.text
{
padding: 2px;
width: 200px;
}
Однако Chrome по-прежнему не показывает их одинакового размера.
Мартинатор прав.
Похоже, вы пытаетесь контролировать ширину различных типов входов или меню в браузерах.Вы можете напрямую выбрать объект и указать ширину.Например:
select {
width:350px;
}
Или вы можете сделать это с помощью текстовой области:
select {
width:350px;
}
Для других типов входных данных требуется синтаксис, упомянутый Мартинатором.Итак, для ввода текста, ввода или даже типа файла вы должны сделать это для каждого из них:
input[type=text] {
width:350px;
}
input[type=input] {
width:350px;
}
input[type=file] {
width:350px;
}