Chúng ta có thể kết hợp list-style-image
với svg
s, mà chúng ta có thể nội dòng trong css ! Phương pháp này cung cấp khả năng kiểm soát đáng kinh ngạc đối với "viên đạn", có thể trở thành bất cứ thứ gì.
Để có một vòng tròn màu đỏ, chỉ cần sử dụng css sau:
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>');
}
Nhưng điều này chỉ là khởi đầu. Điều này cho phép chúng tôi làm bất kỳ điều điên rồ nào chúng tôi muốn với những viên đạn đó. hình tròn hoặc hình chữ nhật rất dễ dàng, nhưng bất cứ thứ gì bạn có thể vẽ với svg
bạn đều có thể dính vào đó! Kiểm tra ví dụ bullseye dưới đây:
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>
Thuộc tính chiều rộng / chiều cao
Một số trình duyệt yêu cầu width
và height
các thuộc tính phải được đặt trên <svg>
, hoặc chúng không hiển thị gì. Tại thời điểm viết bài, các phiên bản Firefox gần đây có vấn đề này. Tôi đã đặt cả hai thuộc tính trong các ví dụ.
Mã hóa
Một nhận xét gần đây đã nhắc nhở tôi về các mã hóa cho data-uri. Đây là một điểm khó khăn đối với tôi gần đây, và tôi có thể chia sẻ một chút thông tin mà tôi đã nghiên cứu.
Thông số data-uri , tham chiếu đến thông số URI , nói rằng svg phải được mã hóa theo thông số URI . Điều đó có nghĩa là tất cả các loại ký tự phải được mã hóa, ví dụ: <
trở thành %3C
.
Một số nguồn đề xuất mã hóa base64, cách này sẽ khắc phục sự cố mã hóa, tuy nhiên, nó sẽ làm tăng kích thước SVG một cách không cần thiết, trong khi mã hóa URI sẽ không. Tôi khuyên bạn nên mã hóa URI.
Thêm thông tin:
hỗ trợ trình duyệt: > ie8
thủ thuật css trên svgs
mdn trên svgs