La feuille de style de l'agent utilisateur pour Chrome donne un rayon de bordure de 5 px à tous les coins d'un <select>
élément. J'ai essayé de me débarrasser de cela en appliquant un rayon de 0px via ma feuille de style externe, ainsi qu'en ligne sur l'élément lui-même; J'ai essayé les deux border-radius:0px
et -webkit-border-radius:0px;
j'ai essayé le plus spécifique border-top-left-radius:0px
(avec son équivalent -webkit).
Aucun ne fonctionne.
Lorsque j'examine l'élément dans les outils de développement de Webkit, le style calculé répertorie toujours le rayon comme 5px. Mais si je clique sur la flèche d'expansion à côté pour voir les détails, il lit: element.style - 0px. Et ci-dessous, il montre la spécification css externe que j'ai donnée de 0px, ainsi que la spécification de feuille de style utilisateur-agent de 5px. Et ces deux derniers sont barrés, comme ils devraient l'être.
Des idées?
Réponses:
Cela fonctionne pour moi (styles la première apparition et non la liste déroulante):
http://jsfiddle.net/fMuPt/
la source
border: 0
et ajoutez un plan comme:outline: 1px inset black; outline-offset:-1px
background-color: #yourbg
,border-style: none
puis créez un div directement avant le menu déroulant avecposition: absolute
etborder-bottom: 1px solid #youpick
etdisplay: inline
. Flèches préservées, UX indemne, meilleure correction.Juste ma solution avec une image déroulante
(inline svg)
J'utilise bootstrap, c'est pourquoi j'ai utilisé
select.form-control
Vous pouvez utiliser
select{
ou à laselect.your-custom-class{
place.la source
width: auto;
, la flèche svg ajoutée recouvre le contenu de la sélection. Cela nécessite un rembourrage supplémentaire sur le côté droit de 16px. Ce remplissage est cependant visible sur tous les navigateurs, cassant le design sur les autres navigateurs. Je n'ai pas encore de solution pour cela ...Si vous voulez des bordures carrées et que vous voulez toujours la petite flèche d'extension, je vous recommande ceci:
la source
outline
sur:focus
. Si vous allez utiliser cette réponse, vous devez changer votreselect:focus
style à montrer visuellement que l'select
élément est devient actif, ou:focus
ed, en cliquant dessus.Quelques bonnes solutions ici mais celle-ci n'a pas besoin de SVG, préserve la bordure via
outline
et la met au ras du bouton.la source
Bien que la réponse du haut supprime la bordure, elle supprime également la flèche, ce qui rend extrêmement difficile, voire impossible, pour l'utilisateur d'identifier l'élément en tant que sélection.
Ma solution était de simplement coller un div blanc (avec un rayon de bordure: 0px) derrière le select. Réglez sa position sur absolue, sa hauteur sur la hauteur de la sélection, et vous devriez être prêt à partir!
la source
Solution avec flèche déroulante droite personnalisée, utilise uniquement le CSS (pas d'images)
la source
background-position: calc(100% - 4px) center, 100% center;
Cela déplace la flèche vers le milieu de la sélection et tout le chemin vers la droite. Merci beaucoup pour ce bon début!Une façon de rester simple et d'éviter de jouer avec les flèches et d'autres fonctionnalités de ce type est simplement de le loger dans un div avec la même couleur d'arrière-plan que la balise de sélection.
la source
Il faut éviter d'éliminer les flèches. Une solution qui préserve les flèches de la liste déroulante consiste d'abord à supprimer les styles de la liste déroulante:
Ensuite, créez un div directement avant le menu déroulant dans votre HTML:
Et stylisez le div comme ceci:
L'affichage en ligne empêchera le div d'aller sur une nouvelle ligne, la position absolue le supprime du flux de la page. Le résultat final est un joli soulignement propre que vous pouvez styliser comme vous le souhaitez, et votre liste déroulante se comporte toujours comme l'utilisateur s'y attend.
la source
L'ombre de la boîte en médaillon fait l'affaire.
Démo
la source
Pour une raison quelconque, il est en fait affecté par la couleur de la bordure ??? Lorsque vous utilisez la couleur standard, les coins restent arrondis, mais si vous modifiez la couleur même légèrement, l'arrondi disparaît.
https://jsfiddle.net/hLg70o70/2/
la source
eh bien j'ai la solution. j'espère que cela peut vous aider :)
la source
Voici la façon de le faire;
la source
J'ai utilisé la solution de jordan314, mais j'ai ensuite ajouté la classe "border-light" pour sélectionner. Si vous avez défini la classe border-light par défaut en css, vous pouvez l'utiliser directement. Il définit simplement la bordure comme blanche). J'ai changé la bordure en carré / supprimer le rayon et j'ai maintenu la flèche.
Voici ce que j'ai fait:
si vous n'avez pas le border-light prédéfini, ajoutez simplement votre css:
la source
Firefox: 18
la source
Définissez le CSS comme
Essayez si cela fonctionne.
la source