Possiamo combinare list-style-imagecon svgs, che possiamo inline in css ! Questo metodo offre un controllo incredibile sui "proiettili", che possono diventare qualsiasi cosa.
Per ottenere un cerchio rosso, usa il seguente 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>');
}
Ma questo è solo l'inizio. Questo ci permette di fare qualsiasi cosa pazza con quei proiettili. cerchi o rettangoli sono facili, ma tutto ciò che puoi disegnare con svglo puoi attaccare lì! Guarda l'esempio di bullseye qui sotto:
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>
Attributi di larghezza / altezza
Alcuni browser richiedono widthche gli heightattributi siano impostati su <svg>oppure non visualizzano nulla. Al momento della scrittura, le versioni recenti di Firefox presentano questo problema. Ho impostato entrambi gli attributi negli esempi.
Codifiche
Un commento recente mi ha ricordato le codifiche per data-uri. Questo è stato un punto dolente per me di recente e posso condividere un po 'di informazioni che ho ricercato.
La specifica data-uri , che fa riferimento alla specifica URI , dice che svg dovrebbe essere codificato in base alla specifica URI . Ciò significa che tutti i tipi di caratteri dovrebbero essere codificati, ad esempio <diventa %3C.
Alcune fonti suggeriscono la codifica base64, che dovrebbe risolvere i problemi di codifica, tuttavia aumenterà inutilmente la dimensione dell'SVG, mentre la codifica URI no. Raccomando la codifica URI.
Ulteriori informazioni:
supporto browser: > ie8
css trucchi su svgs
mdn su svgs