Nous pouvons combiner list-style-image avec svgs, 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:
ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><circle fill="red" cx="5" cy="5" r="2"/></svg>');
}
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 svgvous pouvez y rester! Découvrez l'exemple ci-dessous:
ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><circle fill="red" cx="5" cy="5" r="5"/></svg>');
}
ul ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><rect fill="red" x="0" y="0" height="10" width="10"/></svg>');
}
ul ul ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><circle fill="red" cx="5" cy="5" r="3"/></svg>');
}
ul ul ul ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><rect fill="red" x="2" y="2" height="4" width="4"/></svg>');
}
ul.bulls-eye {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><circle fill="red" cx="5" cy="5" r="5"/><circle fill="white" cx="5" cy="5" r="4"/><circle fill="red" cx="5" cy="5" r="2"/></svg>');
}
ul.multi-color {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" width="15" height="15"><circle fill="blue" cx="6" cy="6" r="6"/><circle fill="pink" cx="6" cy="6" r="4"/><circle fill="green" cx="6" cy="6" r="2"/></svg>');
}
<ul>
<li>
Big circles!
<ul>
<li>Big rectangles!</li>
<li>b
<ul>
<li>Small circles!</li>
<li>c
<ul>
<li>Small rectangles!</li>
<li>b</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>b</li>
</ul>
<ul class="bulls-eye">
<li>Bulls</li>
<li>eyes.</li>
</ul>
<ul class="multi-color">
<li>Multi</li>
<li>color</li>
</ul>
Attributs largeur / hauteur
Certains navigateurs exigent widthque les heightattributs 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