Немного поздно, но если кто-то из вас сходит с ума, пытаясь использовать встроенный SVG в качестве фона , экранирующие предложения, приведенные выше, не совсем работают. С одной стороны, он не работает в IE, и в зависимости от содержимого вашего SVG методика вызовет проблемы в других браузерах, таких как FF.
Если вы base64 кодируете svg (не весь URL, а только тег svg и его содержимое!), Это работает во всех браузерах. Вот тот же пример jsfiddle в base64: http://jsfiddle.net/vPA9z/3/
CSS теперь выглядит так:
body { background-image:
url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMCcgaGVpZ2h0PScxMCc+PGxpbmVhckdyYWRpZW50IGlkPSdncmFkaWVudCc+PHN0b3Agb2Zmc2V0PScxMCUnIHN0b3AtY29sb3I9JyNGMDAnLz48c3RvcCBvZmZzZXQ9JzkwJScgc3RvcC1jb2xvcj0nI2ZjYycvPiA8L2xpbmVhckdyYWRpZW50PjxyZWN0IGZpbGw9J3VybCgjZ3JhZGllbnQpJyB4PScwJyB5PScwJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJy8+PC9zdmc+");
Не забудьте удалить любой URL-адрес перед преобразованием в base64. Другими словами, в приведенном выше примере показано, что color = '# fcc' преобразовано в color = '% 23fcc', вы должны вернуться к #.
Причина, по которой base64 работает лучше, состоит в том, что он устраняет все проблемы с одинарными и двойными кавычками и экранированием URL
Если вы используете JS, вы можете использовать window.btoa()
для создания вашего base64 svg; и если он не работает (он может жаловаться на недопустимые символы в строке), вы можете просто использовать https://www.base64encode.org/ .
Пример установки фона 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>
С JS вы можете генерировать SVG на лету, даже изменяя его параметры.
Одна из лучших статей об использовании SVG находится здесь: http://dbushell.com/2013/02/04/a-primer-to-front-end-svg-hacking/
Надеюсь это поможет
Майк