¡Podemos combinar list-style-image
con svg
s, que podemos incorporar en css ! Este método ofrece un control increíble sobre las "balas", que pueden convertirse en cualquier cosa.
Para obtener un círculo rojo, simplemente use el siguiente 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>');
}
Pero esto es solo el principio. Esto nos permite hacer cualquier locura que queramos con esas balas. los círculos o rectángulos son fáciles, ¡pero cualquier cosa que puedas dibujar svg
se puede pegar allí! Mira el ejemplo de la diana a continuación:
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>
Atributos de ancho / alto
Algunos navegadores requieren que se establezcan atributos width
y height
en el <svg>
, o no muestran nada. Al momento de escribir este artículo, las versiones recientes de Firefox presentan este problema. Establecí ambos atributos en los ejemplos.
Codificaciones
Un comentario reciente me recordó las codificaciones del data-uri. Este fue un punto de dolor para mí recientemente, y puedo compartir un poco de información que he investigado.
La especificación data-uri , que hace referencia a la especificación URI , dice que el svg debe codificarse de acuerdo con la especificación URI . Eso significa que se deben codificar todo tipo de caracteres, por ejemplo, se <
convierte en %3C
.
Algunas fuentes sugieren la codificación base64, que debería solucionar los problemas de codificación, sin embargo, aumentará innecesariamente el tamaño del SVG, mientras que la codificación URI no. Recomiendo la codificación URI.
Más información:
soporte de navegador: > ie8
trucos css en svgs
mdn en svgs