J'ai essayé ceci: 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; }
Comme vous pouvez le voir, cela ne fonctionne pas. Existe-t-il un moyen CSS uniquement de centrer le texte dans la zone de sélection?
Réponses:
Je crains que ce ne soit pas possible avec du CSS simple et qu'il ne soit pas possible de rendre complètement compatible avec tous les navigateurs.
Cependant, en utilisant un plugin jQuery, vous pouvez styliser la liste déroulante:
https://www.filamentgroup.com/lab/jquery-ui-selectmenu-an-aria-accessible-plugin-for-styling-a-html-select.html
Ce plugin masque l'
select
élément et crée desspan
éléments, etc. à la volée pour afficher un style de liste déroulante personnalisé. Je suis assez confiant que vous seriez en mesure de modifier les styles sur les portées, etc. pour aligner les éléments au centre.la source
Il existe une solution partielle pour Chrome :
Il centre l'option sélectionnée, mais pas les options à l'intérieur de la liste déroulante.
la source
text-align: center
.width
n'est pas nécessaire.C'est pour aligner à droite. Essayez-le:
le support du navigateur pour l'
text-align-last
attribut peut être trouvé ici: https://www.w3schools.com/cssref/css3_pr_text-align-last.asp Il semble que seul Safari ne le supporte toujours pas.la source
text-align-last: right;
pourcenter
que je voulais les étiquettes au milieu).Vous devez mettre la règle CSS dans la classe select.
Utiliser le retrait de texte CSS
Exemple
Code CSS
la source
Oui c'est possible. Vous pouvez utiliser text-align-last
la source
2020, j'utilise:
la source
juste en utilisant ceci:
la source
la source
Cette fonction JS devrait fonctionner pour vous
Codepen complet ici: http://codepen.io/anon/pen/NxyovL
la source
Je me suis toujours éloigné du hack suivant pour le faire fonctionner avec css uniquement.
le rembourrage centre le texte et peut être modifié pour la taille du texte :)
Ce n'est évidemment pas correct à 100% du point de vue de la validation, je suppose, mais ça fait l'affaire :)
la source
Solution alternative "fausse" si vous avez une liste avec des options similaires en longueur de texte (sélection de page par exemple):
Cela fonctionne dans Chrome, Firefox et Edge. L'astuce consiste ici à pousser le texte de gauche à centre, puis à soustraire la moitié de la longueur en px, em ou quoi que ce soit du texte de l'option.
La meilleure solution IMO (en 2017) est toujours en train de remplacer la sélection via JS et de créer votre propre fausse boîte de sélection avec des divs ou autre chose et de lier des événements de clic dessus pour une prise en charge multi-navigateur.
la source
Pas tout à fait Centrage mais en utilisant l'exemple ci-dessus, vous pouvez faire une marge gauche dans la zone de sélection.
la source
text-indent
à<select>
tag comme Carreras de @marc dit?cela a fonctionné pour moi:
la source
essaye ça :
la source
Vous ne pouvez pas vraiment personnaliser
<select>
ou<option>
beaucoup. La seule façon (cross-browser) serait de créer manuellement une liste déroulante avec divs et css / js pour créer quelque chose de similaire.la source
Si vous n'avez trouvé aucune solution, vous pouvez utiliser cette astuce sur angularjs ou utiliser js pour mapper la valeur sélectionnée avec un texte sur le div, cette solution est entièrement compatible CSS sur angular mais nécessite un mappage entre select et div:
J'espère que cela pourrait être utile pour quelqu'un car il m'a fallu un jour pour trouver cette solution sur phonegap.
la source
Bien que vous ne puissiez pas centrer le texte de l'option dans une sélection, vous pouvez placer un div absolument positionné sur le dessus de la sélection pour le même effet:
Assurez-vous que les deux div et select ont des positions fixes dans le document.
la source
Ce n'est pas encore à 100%, mais vous pouvez utiliser cet extrait!
text-align-last: centre; // Pour Chrome text-align: center; // Pour Firefox
Ne fonctionne pas sur Safari ou Edge, pour l'instant!
la source
si les options sont statiques, vous pouvez écouter l'événement de changement sur votre boîte de sélection et ajouter un remplissage pour chaque élément individuel
la source
ajoutez & nbsp comme ceci ...
jusqu'à ce que vous obteniez un effet de texte aligné au centre
la source