Je voudrais ajouter du style sur une boîte de sélection avec le pseudo: après (pour styliser ma boîte de sélection avec 2 parties et sans images). Voici le HTML:
<select name="">
<option value="">Test</option>
</select>
Et ça ne marche pas. Je ne sais pas pourquoi et je n'ai pas trouvé la réponse dans les spécifications du W3C. Voici le CSS:
select {
-webkit-appearance: none;
background: black;
border: none;
border-radius: 0;
color: white;
}
select:after {
content: " ";
display: inline-block;
width: 24px; height: 24px;
background: blue;
}
Alors est-ce normal ou y a-t-il une astuce?
Réponses:
Je n'ai pas vérifié cela de manière approfondie, mais j'ai l'impression que ce n'est pas (encore?) Possible, en raison de la manière dont les
select
éléments sont générés par le système d'exploitation sur lequel le navigateur fonctionne, plutôt que par le navigateur lui-même.la source
Je cherchais la même chose car le fond de ma sélection est le même que la couleur de la flèche. Comme mentionné précédemment, il est encore impossible d'ajouter quoi que ce soit en utilisant: before ou: after sur un élément select. Ma solution a été de créer un élément wrapper sur lequel j'ai ajouté ce qui suit: avant le code.
Et c'est ma sélection
J'ai utilisé FontAwesome.io pour ma nouvelle flèche, mais vous pouvez utiliser tout ce que vous voulez. Ce n'est évidemment pas une solution parfaite, mais en fonction de vos besoins, cela peut suffire.
la source
D'après mon expérience, cela ne fonctionne tout simplement pas, à moins que vous ne souhaitiez emballer votre emballage
<select>
dans un emballage. Mais ce que vous pouvez faire à la place est d'utiliser l'image de fond SVG. Par exempleFaites juste attention au bon encodage d'URL grâce à IE. Vous devez utiliser
charset=utf8
(pas seulementutf8
), n'utilisez pas de guillemets (") pour délimiter les valeurs d'attribut SVG, utilisez plutôt des apostrophes (') pour vous simplifier la vie. Encodez l'URL s (% 3E). Au cas où vous auriez à imprimer tous les caractères non ASCII dont vous disposez pour obtenir leur représentation UTF-8 (par exemple BabelMap peut vous aider avec cela) et ensuite fournir cette représentation sous forme codée en URL - par exemple pour ▾ (U+25BE
BLACK DOWN-POINTING SMALL TRIANGLE) La représentation UTF-8 est\xE2\x96\xBE
qui est%E2%96%BE
quand URL-encodé.la source
Cet article peut aider http://bavotasan.com/2011/style-select-box-using-only-css/
Il utilise un div extérieur avec une classe pour résoudre ce problème.
la source
Face au même problème. Cela pourrait probablement être une solution:
la source
Cette solution est similaire à celle de sroy, mais avec un triangle css au lieu de la police Web:
la source
Et si la modification du balisage n'est pas une option?
Voici une solution qui n'a pas d'exigences pour un wrapper: il utilise un SVG dans une image d'arrière-plan. Vous devrez peut-être utiliser un décodeur d'entité HTML pour comprendre comment modifier la couleur de remplissage.
Pincé de CSS-Tricks .
la source
C'est une solution moderne que j'ai concoctée en utilisant font-awesome . Les extensions de fournisseur ont été omises par souci de concision.
HTML
SCSS
Si votre élément de sélection a une couleur d'arrière-plan définie, cela ne fonctionnera pas car cet extrait de code place essentiellement l'icône Chevron derrière l'élément de sélection (pour permettre de cliquer sur le dessus de l'icône pour toujours lancer l'action de sélection).
Cependant, vous pouvez styliser l'encapsuleur de sélection à la même taille que l'élément de sélection et styliser son arrière-plan pour obtenir le même effet.
Découvrez mon CodePen pour une démonstration de travail qui montre ce morceau de code sur une boîte de sélection à la fois sombre et claire en utilisant une étiquette régulière et une étiquette «espace réservé» et d'autres styles nettoyés tels que les bordures et les largeurs.
PS C'est une réponse que j'avais postée à une autre question en double plus tôt cette année.
la source
Insted de styliser la sélection pourquoi ne pas ajouter un div en dehors de la sélection.
et style ensuite en CSS
la source