Eu tentei isso: 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; }
Como você pode ver, não funciona. Existe uma maneira somente CSS de centralizar o texto na caixa de seleção?
Respostas:
Receio que isso não seja possível com CSS simples e não seja possível tornar completamente compatível com vários navegadores.
No entanto, usando um plugin jQuery, você pode estilizar o menu suspenso:
https://www.filamentgroup.com/lab/jquery-ui-selectmenu-an-aria-accessible-plugin-for-styling-a-html-select.html
Este plugin oculta o
select
elemento e criaspan
elementos etc. rapidamente para exibir um estilo de lista suspensa personalizado. Estou bastante confiante de que você poderá alterar os estilos nos vãos, etc., para alinhar os itens no centro.fonte
Existe uma solução parcial para o Chrome :
Ele centraliza a opção selecionada, mas não as opções dentro da lista suspensa.
fonte
text-align: center
.width
não é necessário.Isso é para alinhar corretamente. Tente:
o suporte do navegador para o
text-align-last
atributo pode ser encontrado aqui: https://www.w3schools.com/cssref/css3_pr_text-align-last.asp Parece que apenas o Safari ainda não o suporta.fonte
text-align-last: right;
paracenter
como queria os rótulos no meio).Você precisa colocar a regra CSS na classe select.
Usar recuo de texto CSS
Exemplo
Código CSS
fonte
Sim, é possível. Você pode usar o último alinhamento de texto
fonte
2020, estou usando:
fonte
apenas usando isso:
fonte
fonte
Essa função JS deve funcionar para você
Codepen completo aqui: http://codepen.io/anon/pen/NxyovL
fonte
Eu sempre tive o seguinte hack para fazê-lo funcionar apenas com css.
o preenchimento centralizará o texto e poderá ser ajustado para o tamanho do texto :)
Obviamente, isso não é 100% correto do ponto de vista da validação, eu acho, mas ele faz o trabalho :)
fonte
Solução "falsa" alternativa se você tiver uma lista com opções semelhantes no tamanho do texto (por exemplo, seleção de página):
Isso funciona no Chrome, Firefox e Edge. O truque está aqui para empurrar o texto da esquerda para o centro e subtrair a metade do comprimento em px, em ou qualquer que seja o texto da opção.
Melhor solução A IMO (em 2017) ainda está substituindo o select via JS e construa sua própria caixa de seleção falsa com divs ou qualquer outra coisa e vincule eventos de clique nele para suporte entre navegadores.
fonte
Não muito centralizado, mas usando o exemplo acima, você pode criar uma margem esquerda na caixa de seleção.
fonte
text-indent
à<select>
tag como @marc carreras disse?isso funcionou para mim:
fonte
tente isto:
fonte
Você não pode realmente personalizar
<select>
ou<option>
muito. A única maneira (entre navegadores) seria criar manualmente uma lista suspensa com divs e css / js para criar algo semelhante.fonte
Se você não encontrou nenhuma solução, pode usar este truque em angularjs ou js para mapear o valor selecionado com um texto na div, esta solução é totalmente compatível com css em angular, mas precisa de um mapeamento entre select e div:
Espero que isso possa ser útil para alguém, pois levei um dia para encontrar essa solução no phonegap.
fonte
Embora não seja possível centralizar o texto da opção em uma seleção, você pode colocar uma div absolutamente posicionada sobre a parte superior da seleção para o mesmo efeito:
Certifique-se de que a div e a select tenham posições fixas no documento.
fonte
Ainda não é 100%, mas você pode usar esse trecho!
alinhamento de texto último: centro; // Para o alinhamento de texto do Chrome: center; // Para Firefox
Não funciona no Safari ou Edge, por enquanto!
fonte
se as opções forem estáticas, você poderá ouvir o evento de alteração na caixa de seleção e adicionar preenchimento para cada item individual
fonte
adicione & nbsp assim ...
até obter um efeito de texto alinhado ao centro
fonte