Я хотел бы установить цвет фона по умолчанию для всего документа SVG, например красный.
<svg viewBox="0 0 500 600" style="background: red">/* content */</svg>
Приведенное выше решение работает, но свойство background атрибута style, к сожалению, не является стандартным: http://www.w3.org/TR/SVG/styling.html#SVGStylingProperties , и поэтому оно удаляется во время процесса очистки с помощью SVG. Очиститель.
Есть ли другой способ объявить этот цвет фона?
Ответы:
SVG 1.2 Tiny имеет заполнение области просмотра, но я не уверен, насколько широко реализовано это свойство, поскольку в настоящее время большинство браузеров ориентированы на SVG 1.1. Opera реализует это FWIW.
В настоящее время более кроссбраузерным решением было бы прикрепить
<rect>
элемент с шириной и высотой 100% и fill = "red" в качестве первого дочернего<svg>
элемента элемента, например:источник
width="10000%" height="10000%"
может исправить это. если нет, то добавьте несколько нулейviewport-fill
запрос на перенос caniuse: github.com/Fyrd/caniuse/issues/2186 Почему, почему они позволили SVG умереть.Нашел это работает в Safari. SVG окрашивается только в фоновый цвет там, где закрывается ограничивающая рамка элемента. Итак, дайте ему границу (обводку) с нулевой границей пикселей. Он заполняет все для вас вашим цветом фона.
<svg style='stroke-width: 0px; background-color: blue;'> </svg>
источник
Это ответ @Robert Longson, теперь с кодом (изначально кода не было, он был добавлен позже):
В этом ответе используются:
источник
Позвольте мне сообщить об очень простом решении, которое я нашел, о котором не было написано в предыдущих ответах. Я также хотел установить фон в SVG, но я также хочу, чтобы это работало в отдельном файле SVG.
Что ж, это решение действительно простое, на самом деле SVG поддерживает теги стилей, поэтому вы можете сделать что-то вроде
источник
background-color
на<svg>
элементе будет сделать IE11 рендеринг цвета фона также за пределами области , определенную сviewBox
атрибутом. Это не имеет значения при использованииwidth
иheight
атрибутов , хотя.<svg style"...."></svg>
и<svg><style>...</style></svg>
, если<style>
тег находится на верхнем уровне? Если нет, то этот ответ выглядит как исходное решение OP, переупакованное с другим синтаксисом. (Но, может быть, это решение выживает SVG Cleaner, а<svg style="..."></svg>
нет?)Сейчас я работаю над таким файлом:
И я попытался поместить это в
style.css
:Он работает с Chromium и Firefox, но я не думаю, что это хорошая практика . Программа просмотра изображений EyeOfGnome не отображает их, а Inkscape использует специальное пространство имен для хранения такого фона:
Что ж, похоже, что корневой элемент SVG не является частью окрашиваемых элементов в рекомендациях по SVG.
Поэтому я предлагаю использовать «прямое» решение, предложенное Робертом Лонгсоном, потому что я предполагаю, что это не простой «взлом». Кажется, это стандартный способ установить фон с помощью SVG.
источник
Другой обходной путь может заключаться в использовании
<div>
того же размера для упаковки<svg>
. После этого вы сможете подать заявку"background-color"
, и"background-image"
это повлияет наsvg
.источник