Ответ 1
Изображение должно быть полным.
Из спецификация SVG...
Элемент "изображение" указывает, что содержимое полного файла должно быть отображено...
То же самое верно для фонового изображения и т.д.
Я знаю, что внешние файлы svg могут быть связаны с фоновыми изображениями:
background-image: url(Icon.svg);
и идентификатор символов могут быть нацелены на внешний файл svg:
background-image: url(Icons.svg#Icon-Menu);
но как установить фоновое изображение на символ inline svg? * (как указано ниже) *
Мой svg находится в верхней части моего веб-страницы, а не во внешнем файле.
Я хочу, чтобы .test
фоновое изображение было #Icon-Menu
.
.test{
background:#ddd url('../#Icon-Menu');
height:100px;
width:100px;
display:block;
}
<div style="height: 0; width: 0; position: absolute; visibility: hidden;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="Icon-Menu" viewBox="0 0 512 512">
<title>Menu</title>
<path d="M93.417,5.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V8.333 C96.417,6.679,95.071,5.333,93.417,5.333z" />
<path d="M93.417,40.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V43.333 C96.417,41.679,95.071,40.333,93.417,40.333z" />
<path d="M93.417,75.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V78.333 C96.417,76.679,95.071,75.333,93.417,75.333z" />
</symbol>
</svg>
</div>
<div class="test"></div>
Изображение должно быть полным.
Из спецификация SVG...
Элемент "изображение" указывает, что содержимое полного файла должно быть отображено...
То же самое верно для фонового изображения и т.д.
@Robert Longson
это правильно. Но вы можете сделать это таким образом. Но символ не так, как он будет работать. К сожалению, вам нужно использовать "g" или что-то в этом роде для ссылки.
body {
background: url(http://www.broken-links.com/tests/images/faces.svg#devil-view);
}
http://codepen.io/Type-Style/pen/ByvKJq
Он не будет работать, если svg находится в разметке.
(1) одним возможным способом с встроенным SVG будет использование символов и DIV абсолютного расслоения:
<a class="preview-modal__device-icon-link" ng-click="setPreviewWidth('phone')">
<svg class="preview-modal__device-icon"><use xlink:href="#icon-phone">
</use></svg>
</a>
(2) Второе решение - использовать URI данных: здесь есть хорошая информация: https://css-tricks.com/using-svg/ используя этот инструмент: интерактивный инструмент преобразования Mobilefish.com
CSS
.logo {
background: url("data:image/svg+xml;base64,[data]");
}
HTML:
<img src="data:image/svg+xml;base64,[data]">