Wir können list-style-imagemit svgs kombinieren , was wir in CSS inline können ! Diese Methode bietet eine unglaubliche Kontrolle über die "Kugeln", die alles werden können.
Um einen roten Kreis zu erhalten, verwenden Sie einfach das folgende CSS:
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>');
}
Dies ist jedoch nur der Anfang. Dies ermöglicht es uns, mit diesen Kugeln alles zu tun, was wir wollen. Kreise oder Rechtecke sind einfach, aber alles, was Sie zeichnen können, svgkann dort bleiben! Schauen Sie sich das Bullseye-Beispiel unten an:
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>
Attribute für Breite / Höhe
Einige Browser erfordern widthund heightAttribute müssen auf dem festgelegt werden<svg> , oder sie zeigen nichts an. Zum Zeitpunkt des Schreibens weisen neuere Versionen von Firefox dieses Problem auf. Ich habe beide Attribute in den Beispielen festgelegt.
Kodierungen
Ein kürzlich veröffentlichter Kommentar erinnerte mich an Codierungen für die Daten-Uri. Dies war in letzter Zeit ein Problem für mich und ich kann ein paar Informationen teilen, die ich recherchiert habe.
Die Daten-Uri-Spezifikation , die auf die URI-Spezifikation verweist , besagt, dass die SVG gemäß der URI-Spezifikation codiert werden sollte . Das bedeutet, dass alle Arten von Zeichen codiert werden sollten, z . B. <wird %3C.
Einige Quellen schlagen eine Base64-Codierung vor, die Codierungsprobleme beheben sollte, jedoch die Größe des SVG unnötig erhöht, während dies bei der URI-Codierung nicht der Fall ist. Ich empfehle die URI-Codierung.
Mehr Info:
Browser-Unterstützung: > ie8
CSS-Tricks auf SVGs
mdn auf svgs