Я попробовал это: http://jsfiddle.net/ilyaD/KGcC3/
HTML:
<select name="state" class="ddList">
<option value="">(please select a state)</option>
<option class="lt" value="--">none</option>
<option class="lt" value="AL">Alabama</option>
<option class="lt" value="AK">Alaska</option>
<option class="lt" value="AZ">Arizona</option>
<option class="lt" value="AR">Arkansas</option>
<option class="lt" value="CA">California</option>
<option class="lt" value="CO">Colorado</option>
</select>
CSS:
select { width: 400px; text-align: center; }
select .lt { text-align: center; }
Как видите, это не работает. Есть ли CSS-способ для центрирования текста в окне выбора?
Ответы:
Я боюсь, что это невозможно с простым CSS, и не будет возможности сделать полностью кросс-браузерную совместимой.
Однако, используя плагин jQuery, вы можете стилизовать выпадающий список:
https://www.filamentgroup.com/lab/jquery-ui-selectmenu-an-aria-accessible-plugin-for-styling-a-html-select.html
Этот плагин скрывает
select
элемент, создаетspan
элементы и т. Д. Для отображения собственного стиля выпадающего списка. Я вполне уверен, что вы сможете изменить стили на пролетах и т. Д., Чтобы выровнять по центру элементы.источник
Для Chrome есть частичное решение :
Он центрирует выбранную опцию, но не опции внутри выпадающего меню.
источник
text-align: center
.width
не обязательно.Это для выравнивания справа. Попытайся:
поддержка
text-align-last
атрибута в браузере может быть найдена здесь: https://www.w3schools.com/cssref/css3_pr_text-align-last.asp Похоже, что только Safari все еще не поддерживает его.источник
text-align-last: right;
на то,center
как я хотел, чтобы ярлыки были посередине).Вы должны поместить правило CSS в класс select.
Использовать CSS-отступ
пример
Код CSS
источник
Да, это возможно. Вы можете использовать text-align-last
источник
2020, я использую:
источник
просто используя это:
источник
источник
Эта функция JS должна работать для вас
Полный Codepen здесь: http://codepen.io/anon/pen/NxyovL
источник
Мне всегда удавалось использовать следующий хак, чтобы заставить его работать только с CSS.
отступ будет центрировать текст и может быть настроен для размера текста :)
Я думаю, это не на 100% правильно с точки зрения валидации, но это делает работу :)
источник
Альтернативное «поддельное» решение, если у вас есть список с опциями, аналогичными по длине текста (например, выберите страницу):
Это работает в Chrome, Firefox и Edge. Хитрость здесь в том, чтобы переместить текст слева в центр, а затем вычесть половину длины в px, em или любую другую часть текста опции.
Лучшее решение IMO (в 2017 году) по-прежнему заменяет select через JS и создает свой собственный фальшивый флажок выбора с помощью div или чего-либо еще и связывает события клика на нем для поддержки кросс-браузерной работы.
источник
Не совсем Центрирование, но используя пример выше, вы можете сделать левое поле в поле выбора.
источник
text-indent
в<select>
тег, как сказал @marc carreras?это сработало для меня:
источник
попробуй это :
источник
Вы не можете настроить
<select>
или<option>
многое другое. Единственный способ (кросс-браузерный) - вручную создать выпадающий список с помощью divs и css / js, чтобы создать нечто подобное.источник
Если вы не нашли никакого решения, вы можете использовать этот трюк на angularjs или js, чтобы отобразить выбранное значение с текстом на div, это решение полностью соответствует CSS для angular, но требуется сопоставление между select и div:
Надеюсь, что это может быть полезно для кого-то, так как мне потребовался один день, чтобы найти это решение в телефонной пробке.
источник
Хотя вы не можете центрировать текст опции внутри выделения, вы можете поместить абсолютно позиционированный div поверх верхней части выбора с тем же эффектом:
Убедитесь, что div и select имеют фиксированные позиции в документе.
источник
Это еще не 100%, но вы можете использовать этот фрагмент!
text-align-last: center; // Для Chrome text-align: center; // Для Firefox
Пока не работает на Safari или Edge!
источник
если параметры статичны, вы можете прослушать событие изменения в поле выбора и добавить заполнение для каждого отдельного элемента
источник
добавить вот так ...
пока вы не получите эффект выравнивания текста по центру
источник