Ми можемо поєднувати list-style-imageз svgs, які ми можемо вставити в css ! Цей метод пропонує неймовірний контроль над "кулями", якими може стати що завгодно.
Щоб отримати червоне коло, просто використовуйте такий 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>');
}
Але це лише початок. Це дозволяє нам робити будь-які божевільні речі, які ми хочемо, з цими кулями. кола або прямокутники легко, але все, що ви можете намалювати, svgви можете вставити туди! Ознайомтеся з прикладом «бичачих очей» нижче:
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>
Атрибути ширини / висоти
Деякі браузери вимагають widthі heightатрибути , які будуть встановлювати на<svg> , або вони не показують нічого. На момент написання статті останні проблеми Firefox виявляють цю проблему. У прикладах я встановив обидва атрибути.
Кодування
Нещодавній коментар нагадав мені кодування для data-uri. Нещодавно це стало для мене проблемним явищем, і я можу поділитися деякою інформацією, яку досліджував.
Специфікація data-uri , яка посилається на специфікацію URI , говорить, що svg слід кодувати відповідно до специфікації URI . Це означає, що всі типи символів повинні бути закодовані, наприклад, <стає %3C.
Деякі джерела пропонують кодування base64, яке має вирішити проблеми з кодуванням, однак це зайво збільшить розмір SVG, тоді як кодування URI ні. Я рекомендую кодування URI.
Більше інформації:
підтримка браузера: > ie8
css трюки на svgs - -
mdn на svgs