Заполнение
Базовая линия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Свойство fill CSS определяет, как содержимое SVG-текста и внутренняя область SVG-фигур заполняются или окрашиваются. Если оно присутствует, оно переопределяет атрибут элемента fill.
Области внутри контура SVG-фигуры или текста окрашиваются. Что считается «внутри» фигуры, не всегда очевидно. Контуры, определяющие фигуру, могут перекрываться. Области, считающиеся «внутри» этих сложных фигур, уточняются свойством или атрибутом fill-rule.
Если подпути открыты, fill закрывает путь перед окраской, как если бы была включена команда «closepath», соединяющая последнюю точку подпути с первой точкой подпути. Другими словами, fill применяется к открытым подпутям внутри path элементов (т.е. подпутям без команды closepath) и polyline элементов.
Синтаксис
/* keywords */ fill: none; fill: context-fill; fill: context-stroke; /* <color> values */ fill: red; fill: hsl(120deg 75% 25% / 60%); /* <url> values */ fill: url(#gradientElementID); fill: url(star.png); /* <url> with fallback */ fill: url(#gradientElementID) blue; fill: url(star.png) none; /* Global values */ fill: inherit; fill: initial; fill: revert; fill: revert-layer; fill: unset;
Значения
none-
Никакое
fillне окрашивается; области внутри обводки (если таковая есть) прозрачны. context-fill-
Использует значение цвета
fillиз контекстного элемента. context-stroke-
Использует значение цвета
strokeиз контекстного элемента. <color>-
Цвет заливки как любое допустимое значение CSS
<color>. <url>-
Ссылка на URL-адрес элемента-сервера SVG для отрисовки, например,
<linearGradient>,<radialGradient>или<pattern>. Ссылка на ресурс может быть дополнена<color>илиnone, которые будут использоваться в качестве резервного варианта, если сервер для отрисовки не найден.
Формальное определение
| Начальное значение | black |
|---|---|
| Применимо к | Элементы SVG-фигур и текстового содержимого |
| Наследуется | да |
| Вычисленное значение | как указано, но с <color> значениями, вычисленными, и <url> значениями, приведенными к абсолютному виду |
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
fill =
<paint>
<paint> =
none |
<image> |
<svg-paint>
<image> =
<url> |
<gradient>
<svg-paint> =
child |
child( <integer> )
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
Примеры
Определение значений заливки для SVG-элементов
Этот пример демонстрирует, как объявляется fill, эффект свойства и то, как свойство CSS fill имеет приоритет над атрибутом fill.
HTML
У нас есть SVG с двумя сложными фигурами, определенными с использованием SVG-элементов <polygon> и <path>. Оба имеют атрибут fill со значением #000 (что эквивалентно значению по умолчанию black). Мы добавляем темную серую обводку #666 с помощью атрибута SVG stroke, но могли бы использовать свойство stroke.
<svg viewBox="0 0 220 120" xmlns="http://www.w3.org/2000/svg">
<path
d="M 10,5 l 90,0 -80,80 0,-60 80,80 -90,0 z"
stroke="#666"
fill="#000" />
<polygon
points="180,10 150,100 220,40 140,40 210,100"
stroke="#666"
fill="#000" />
</svg>
CSS
Мы устанавливаем значения fill для фигур в SVG.
path {
fill: red;
}
polygon {
fill: hsl(0deg 100% 50% / 60%);
}
Результаты
Значение свойства CSS fill переопределяет значение атрибута SVG fill, в результате чего обе фигуры заполняются красным цветом; красный цвет многоугольника полупрозрачный.
Использование ключевых слов для значений fill
Этот пример демонстрирует использование ключевых слов для fill.
HTML
Мы включаем три элемента <path> и элемент <marker>, который добавляет круг <circle> к каждой точке пути. Мы устанавливаем черный цвет маркера круга с серым заполнением с помощью атрибутов SVG stroke и fill.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 90">
<path d="M 10 44.64 L 30 10 L 70 10 L 90 44.64 L 70 79.28 L 30 79.28 Z" />
<path d="M 100 44.64 L 80 10 L 120 10 L 140 44.64 L 120 79.28 L 80 79.28 Z" />
<path
d="M 150 44.64 L 130 10 L 170 10 L 190 44.64 L 170 79.28 L 130 79.28 Z" />
<marker
id="circle"
markerWidth="12"
markerHeight="12"
refX="6"
refY="6"
markerUnits="userSpaceOnUse">
<circle cx="6" cy="6" r="3" stroke-width="2" stroke="black" fill="grey" />
</marker>
</svg>
CSS
Мы задаем разные цвета stroke и fill для каждого пути. У первого пути с красной границей установлено fill со значением none. Мы устанавливаем цвет обводки и заливки маркера круга равным цвету обводки элемента, который он маркирует, используя значение context-stroke.
path {
stroke-width: 2px;
marker: url(#circle);
}
path:nth-of-type(1) {
stroke: red;
fill: none;
}
path:nth-of-type(2) {
stroke: green;
fill: lightgreen;
}
path:nth-of-type(3) {
stroke: blue;
fill: lightblue;
}
circle {
stroke: context-stroke;
fill: context-stroke;
}
Результаты
Обратите внимание, как первый путь имеет прозрачный фон, потому что fill установлено в none, переопределяя значение по умолчанию fill равное black. Круги заполнены цветом обводки. Если вы измените значение на context-fill, круги будут прозрачными, lightgreen и lightblue вместо red, green, и blue.
Заливки и резервные варианты
Этот пример демонстрирует, как включить значение url() с резервным вариантом как fill значение.
HTML
У нас есть SVG, содержащий две звезды <polygon> и <linearGradient>, которая переходит от зеленого к золотому и к красному.
<svg viewBox="0 0 220 120" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="myGradient">
<stop offset="5%" stop-color="green" />
<stop offset="50%" stop-color="gold" />
<stop offset="95%" stop-color="red" />
</linearGradient>
</defs>
<polygon points="80,10 50,100 120,40 40,40 110,100" />
<polygon points="180,10 150,100 220,40 140,40 210,100" />
</svg>
CSS
Мы устанавливаем значения fill для многоугольников в SVG, предоставляя значение url() и резервный вариант.
polygon:first-of-type {
fill: url("#myGradient") magenta;
}
polygon:last-of-type {
fill: url("#MISSINGIMAGE") magenta;
}
Результаты
Первая звезда имеет градиент в качестве фона. Вторая звезда использует резервное значение, поскольку элемент, на который ссылается url() не существует.
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
fill |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
См. также
- Атрибут SVG
fill - Свойства представления:
fill,clip-rule,color-interpolation-filters,fill-opacity,fill-rule,marker-end,marker-mid,marker-start,shape-rendering,stop-color,stop-opacity,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,text-anchorиvector-effect opacitybackground-color<color>-
<basic-shape>тип данных
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/fill