Je me demandais s'il y avait un moyen de changer la couleur des puces dans une liste.
J'ai une liste comme celle-ci:
<ul>
<li>House</li>
<li>Car</li>
<li>Garden</li>
</ul>
Il ne m'est pas possible d'insérer quoi que ce soit dans les li, comme un «span» ou un «p». Puis-je changer la couleur des puces mais pas le texte d'une manière intelligente?
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10"><circle fill="red" cx="5" cy="5" r="2"/></svg>');
J'ai réussi cela sans ajouter de balisage, mais en utilisant à la place
li:before
. Cela a évidemment toutes les limitations de:before
(pas d'ancien support IE), mais il semble fonctionner avec IE8, Firefox et Chrome après quelques tests très limités. Le style de puce est également limité par ce qui est en unicode.la source
font-size:1em
d'obtenir une balle mieux proportionnée!)Nous pouvons combiner
list-style-image
avecsvg
s, que nous pouvons inline en css ! Cette méthode offre un contrôle incroyable sur les "balles", qui peuvent devenir n'importe quoi.Pour obtenir un cercle rouge, utilisez simplement le css suivant:
Mais ce n'est que le début. Cela nous permet de faire tout ce que nous voulons avec ces balles. les cercles ou les rectangles sont faciles, mais tout ce que vous pouvez dessiner avec
svg
vous pouvez y rester! Découvrez l'exemple ci-dessous:Afficher l'extrait de code
Attributs largeur / hauteur
Certains navigateurs exigent
width
que lesheight
attributs soient définis sur le<svg>
, ou ils n'afficheront rien. Au moment de la rédaction de cet article, les versions récentes de Firefox présentent ce problème. J'ai défini les deux attributs dans les exemples.Encodages
Un commentaire récent m'a rappelé les encodages pour le data-uri. Cela a été un problème pour moi récemment, et je peux partager un peu d'informations que j'ai recherchées.
La spécification data-uri , qui fait référence à la spécification URI , indique que le svg doit être codé selon la spécification URI . Cela signifie que toutes sortes de caractères doivent être encodés, par exemple
<
devient%3C
.Certaines sources suggèrent un encodage base64, qui devrait résoudre les problèmes d'encodage, mais cela augmentera inutilement la taille du SVG, contrairement à l'encodage URI. Je recommande l'encodage URI.
Plus d'informations:
support du navigateur: > ie8
astuces css sur svgs
mdn sur svgs
la source
<svg>
code "joli" , essayez d'abord de l'exécuter via un encodeur uri.S'appuyant sur la solution de @ Marc - puisque le caractère de puce est rendu différemment avec différentes polices et navigateurs, j'ai utilisé la technique css3 suivante avec un rayon de bordure pour créer une puce sur laquelle j'ai plus de contrôle:
la source
Je sais que c'est une question vraiment, vraiment ancienne, mais je jouais avec ça et j'ai trouvé une façon que je n'ai pas vue publiée. Donnez une couleur à la liste, puis écrasez la couleur du texte à l'aide du
::first-line
sélecteur. Je ne suis pas un expert, alors peut-être qu'il y a quelque chose qui ne va pas avec cette approche qui me manque, mais cela semble fonctionner.la source
Construire à la fois les solutions @Marc et @jessica - Voici la solution que j'utilise:
J'utilise
em
pour les tailles de police, donc si vous définissez votretop
valeur,.5em
elle sera toujours placée au milieu de votre première ligne de texte. J'ai utiliséleft:-20px
parce que c'est la position par défaut des puces dans les navigateurs: parentpadding/2
la source
J'ai aussi beaucoup aimé la réponse de Marc - j'avais besoin d'un ensemble d'UL de couleurs différentes et évidemment, il serait plus facile d'utiliser simplement une classe. Voici ce que j'ai utilisé pour l'orange, par exemple:
De plus, j'ai trouvé que le code hexadécimal que j'utilisais pour "content:" était différent de celui de Marc (ce cercle hexadécimal semblait être un peu trop haut). Celui que j'ai utilisé semble s'asseoir parfaitement au milieu. J'ai également trouvé plusieurs autres formes (carrés, triangles, cercles, etc.) ici même
la source
Pour moi, la meilleure option est d'utiliser des pseudo éléments CSS, donc pour
disc
le style de puce, cela ressemblerait à ça:Remarques:
width
etheight
devrait avoir des valeurs égales pour garder les pointeurs arrondisborder-radius
à zéro si vous voulez avoir dessquare
puces de listePour plus de styles de puces, vous pouvez utiliser d'autres formes css https://css-tricks.com/examples/ShapesOfCSS/ (choisissez ceci qui ne nécessite pas de pseudo éléments pour fonctionner, donc par exemple des triangles)
la source
::marqueur
Vous pouvez utiliser le
::marker
pseudo-élément CSS pour sélectionner la zone de marqueur d'un élément de liste (c'est-à-dire des puces ou des nombres).la source
S'appuyant sur la réponse de @ ddilsaver. Je voulais pouvoir utiliser un sprite pour la balle. Cela semble fonctionner:
la source
J'ai essayé cela aujourd'hui et
j'ai tapé ceci: j'avais besoin d'afficher des marqueurs de couleur dans mes listes (à la fois des puces et des nombres). Je suis tombé sur cette astuce et j'ai écrit dans ma feuille de style avec la mutualisation des propriétés:
J'ai choisi un personnage différent pour afficher une puce, en la regardant ici . J'avais besoin d'ajuster la marge en conséquence, peut-être que les valeurs ne s'appliqueront pas avec la police que vous avez choisie (les chiffres utilisent votre police Web).
la source
Essayez plutôt d'utiliser ceci:
la source
Version en ligne, fonctionne pour Outlook Desktop:
JSFiddle .
la source