Intenté esto: 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 puede ver, no funciona. ¿Hay una manera solo de CSS para centrar el texto en el cuadro de selección?
Respuestas:
Me temo que esto no es posible con CSS simple, y no será posible hacer completamente compatible con todos los navegadores.
Sin embargo, utilizando un complemento jQuery, puede diseñar el menú desplegable:
https://www.filamentgroup.com/lab/jquery-ui-selectmenu-an-aria-accessible-plugin-for-styling-a-html-select.html
Este complemento oculta el
select
elemento y creaspan
elementos, etc. sobre la marcha para mostrar un estilo de lista desplegable personalizado. Estoy bastante seguro de que podrá cambiar los estilos en los tramos, etc. para alinear los elementos al centro.fuente
Hay una solución parcial para Chrome :
Centra la opción seleccionada, pero no las opciones dentro del menú desplegable.
fuente
text-align: center
.width
no es necesario.Eso es para alinear bien. Intentalo:
el soporte del navegador para el
text-align-last
atributo se puede encontrar aquí: https://www.w3schools.com/cssref/css3_pr_text-align-last.asp Parece que solo Safari todavía no lo admite.fuente
text-align-last: right;
acenter
como quería las etiquetas en el medio).Tienes que poner la regla CSS en la clase select.
Usar sangría de texto CSS
Ejemplo
Código CSS
fuente
Sí, es posible. Puedes usar text-align-last
fuente
2020, estoy usando:
fuente
solo usando esto:
fuente
fuente
Esta función JS debería funcionar para usted
Codepen completo aquí: http://codepen.io/anon/pen/NxyovL
fuente
Siempre me salí con la suya para que funcione solo con CSS.
el relleno centrará el texto y se puede ajustar para el tamaño del texto :)
Obviamente, esto no es 100% correcto desde el punto de vista de la validación, supongo, pero hace el trabajo :)
fuente
Solución alternativa "falsa" si tiene una lista con opciones similares en longitud de texto (selección de página, por ejemplo):
Esto funciona en Chrome, Firefox y Edge. El truco está aquí para empujar el texto de la izquierda al centro, luego restar la mitad de la longitud en px, em o lo que sea del texto de la opción.
La mejor solución IMO (en 2017) todavía está reemplazando la selección a través de JS y construye tu propio cuadro de selección falso con divs o lo que sea y vincula los eventos de clic en él para soporte de navegador cruzado.
fuente
No del todo centrado, pero usando el ejemplo anterior puede hacer un margen izquierdo en el cuadro de selección.
fuente
text-indent
a la<select>
etiqueta como dijo @marc carreras?esto funcionó para mí:
fuente
prueba esto :
fuente
Realmente no se puede personalizar
<select>
o<option>
mucho. La única forma (cross-browser) sería crear manualmente un menú desplegable con divs y css / js para crear algo similar.fuente
Si no encontró ninguna solución, puede usar este truco en angularjs o usar js para asignar el valor seleccionado con un texto en el div, esta solución es totalmente compatible con css en angular pero necesita una asignación entre select y div:
Espero que esto pueda ser útil para alguien, ya que me llevó un día encontrar esta solución en phonegap.
fuente
Si bien no puede centrar el texto de la opción dentro de una selección, puede colocar un div absolutamente posicionado sobre la parte superior de la selección para el mismo efecto:
Asegúrese de que tanto el div como el select tengan posiciones fijas en el documento.
fuente
Todavía no es 100%, ¡pero puedes usar este fragmento!
text-align-last: centro; // Para Chrome text-align: center; // Para Firefox
¡No funciona en Safari o Edge, por ahora!
fuente
Si las opciones son estáticas, puede escuchar el evento de cambio en su cuadro de selección y agregar relleno para cada elemento individual
fuente
agregar & nbsp como este ...
hasta que obtenga un efecto de texto alineado al centro
fuente