Hơi muộn một chút, nhưng nếu bất kỳ ai trong số các bạn đang phát điên khi cố gắng sử dụng SVG nội tuyến làm nền , thì các đề xuất thoát ở trên không hoàn toàn hiệu quả. Đối với một, nó không hoạt động trong IE và tùy thuộc vào nội dung của SVG của bạn, kỹ thuật sẽ gây rắc rối trong các trình duyệt khác, như FF.
Nếu bạn base64 mã hóa svg (không phải toàn bộ url, chỉ cần thẻ svg và nội dung của nó!) Thì nó hoạt động trong tất cả các trình duyệt. Dưới đây là ví dụ jsfiddle tương tự trong cơ sở64: http://jsfiddle.net/vPA9z/3/
CSS bây giờ trông như thế này:
body { background-image:
url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMCcgaGVpZ2h0PScxMCc+PGxpbmVhckdyYWRpZW50IGlkPSdncmFkaWVudCc+PHN0b3Agb2Zmc2V0PScxMCUnIHN0b3AtY29sb3I9JyNGMDAnLz48c3RvcCBvZmZzZXQ9JzkwJScgc3RvcC1jb2xvcj0nI2ZjYycvPiA8L2xpbmVhckdyYWRpZW50PjxyZWN0IGZpbGw9J3VybCgjZ3JhZGllbnQpJyB4PScwJyB5PScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJy8+PC9zdmc+");
Hãy nhớ xóa bất kỳ URL nào thoát trước khi chuyển đổi sang base64. Nói cách khác, ví dụ trên cho thấy color = '# fcc' được chuyển đổi thành color = '% 23fcc', bạn nên quay lại #.
Lý do tại sao base64 hoạt động tốt hơn là vì nó loại bỏ tất cả các vấn đề với dấu ngoặc đơn và dấu ngoặc kép và thoát url
Nếu bạn đang sử dụng JS, bạn có thể sử dụng window.btoa()
để tạo cơ sở64 svg; và nếu nó không hoạt động (nó có thể phàn nàn về các ký tự không hợp lệ trong chuỗi), bạn chỉ cần sử dụng https://www.base64encode.org/ .
Ví dụ để đặt nền div:
var mySVG = "<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'><linearGradient id='gradient'><stop offset='10%' stop-color='#F00'/><stop offset='90%' stop-color='#fcc'/> </linearGradient><rect fill='url(#gradient)' x='0' y='0' width='100%' height='100%'/></svg>";
var mySVG64 = window.btoa(mySVG);
document.getElementById('myDiv').style.backgroundImage = "url('data:image/svg+xml;base64," + mySVG64 + "')";
html, body, #myDiv {
width: 100%;
height: 100%;
margin: 0;
}
<div id="myDiv"></div>
Với JS, bạn có thể tạo các SVG một cách nhanh chóng, thậm chí thay đổi các tham số của nó.
Một trong những bài viết tốt hơn về việc sử dụng SVG có tại đây: http://dbushell.com/2013/02/04/a-primer-to-front-end-svg-hacking/
Hi vọng điêu nay co ich
Mike