Мы можем комбинировать list-style-image
с svg
s, которые мы можем встроить в 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 трюки на SVG
mdn на svgs