Итак, я пытаюсь сделать что-то вроде этого:
div {
width: 100px;
height: 100px;
background-position: center center;
background-repeat: no-repeat;
background-size: 100px 100px;
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' style='fill:red; stroke:none'><rect x='0' y='40' width='100' height='20' /><rect x='40' y='0' width='20' height='100' /></svg>");
}
Смотрите здесь: http://jsfiddle.net/trxkcx41/4/
Это прекрасно работает в современных версиях Chrome, Safari (OS X и iOS) и Firefox. Однако SVG вообще не отображается в IE 9, 10 или 11.
Это потому, что это не поддерживается в IE или потому, что я делаю что-то неправильно?
[ОБНОВЛЕНИЕ С РЕШЕНИЕМ]
Благодаря hungerstar, у меня это работает. Чтобы обобщить его рекомендацию, мне нужно было внести следующие изменения:
-
Измените тип данных с
data:image/svg+xml;utf8
наdata:image/svg+xml;charset=utf8
(т.е. требуетсяcharset=
) -
URL кодирует svg. Чтобы свести к минимуму URL-кодирование, используйте
'
вместо"
, чтобы заключить атрибуты. Итак, в моем случае необходимо было закодировать только теги<
и>
.
В конечном итоге мой CSS выглядел так:
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' style='fill:red; stroke:none' %3E%3Crect x='0' y='40' width='100' height='20' /%3E%3Crect x='40' y='0' width='20' height='100' /%3E%3C/svg%3E");