Свойство CSS `fill`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Свойство fill CSS определяет, как заполняется или закрашивается содержимое текста SVG и внутренняя область фигур SVG. Если это свойство задано, оно переопределяет атрибут fill элемента.
Закрашиваются области внутри контура фигуры или текста SVG. Не всегда очевидно, что именно находится «внутри» фигуры. Пути, определяющие фигуру, могут перекрываться. Области, которые считаются «внутренними» для таких сложных фигур, уточняются свойством или атрибутом fill-rule.
Если подпути открыты, fill замыкает путь перед закрашиванием, как если бы была добавлена команда «closepath», соединяющая последнюю точку подпути с первой. Другими словами, fill применяется к открытым подпутям внутри элементов path (то есть к подпутям без команды closepath) и элементам polyline.
Примечание: Свойство fill применяется только к элементам <circle>, <ellipse>, <path>, <polygon>, <polyline>, <rect>, <text>, <textPath> и <tspan>, вложенным в элемент <svg>. Оно не применяется к другим элементам SVG, HTML и псевдоэлементам.
Синтаксис
/* 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;
Значения
Это свойство задаётся одним значением из приведённого ниже списка или двумя значениями при использовании <url>:
-
none - Ничего не
fill; области внутри обводки, если она есть, прозрачны. -
context-fill - Использует значение заливки
fillиз контекстного элемента. -
context-stroke - Использует значение обводки
strokeиз контекстного элемента. -
<color> - Цвет заливки, заданный любым допустимым значением CSS
<color>. -
<url> - URL-ссылка на элемент SVG, предоставляющий заливку, например
<linearGradient>,<radialGradient>или<pattern>. После ссылки на ресурс можно указать<color>илиnone, которые будут использоваться в качестве резервного значения, если ссылка на элемент заливки не разрешится.
Формальное определение
| Начальное значение | black |
|---|---|
| Применяется к | Фигуры SVG и элементы с текстовым содержимым |
| Наследуется | да |
| Вычисленное значение | как задано, но значения <code><color></code> вычисляются, а значения <code><url></code> становятся абсолютными |
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
fill = <paint> <paint> = none | <color> | <url> [none | <color>]? | context-fill | context-stroke <color> = <color-base> | currentColor | <system-color> | <light-dark()> | <deprecated-system-color> <color-base> = <hex-color> | <color-function> | <named-color> | <color-mix()> | transparent <system-color> = AccentColor | AccentColorText | ActiveText | ButtonBorder | ButtonFace | ButtonText | Canvas | CanvasText | Field | FieldText | GrayText | Highlight | HighlightText | LinkText | Mark | MarkText | SelectedItem | SelectedItemText | VisitedText <light-dark()> = light-dark( <color>, <color> ) <deprecated-system-color> = ActiveBorder | ActiveCaption | AppWorkspace | Background | ButtonHighlight | ButtonShadow | CaptionText | InactiveBorder | InactiveCaption | InactiveCaptionText | InfoBackground | InfoText | Menu | MenuText | Scrollbar | ThreeDDarkShadow | ThreeDFace | ThreeDHighlight | ThreeDLightShadow | ThreeDShadow | Window | WindowFrame | WindowText <color-function> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()> <named-color> = aliceblue | antiquewhite | aqua | aquamarine | azure | beige | bisque | black | blanchedalmond | blue | blueviolet | brown | burlywood | cadetblue | chartreuse | chocolate | coral | cornflowerblue | cornsilk | crimson | cyan | darkblue | darkcyan | darkgoldenrod | darkgray | darkgreen | darkgrey | darkkhaki | darkmagenta | darkolivegreen | darkorange | darkorchid | darkred | darksalmon | darkseagreen | darkslateblue | darkslategray | darkslategrey | darkturquoise | darkviolet | deeppink | deepskyblue | dimgray | dimgrey | dodgerblue | firebrick | floralwhite | forestgreen | fuchsia | gainsboro | ghostwhite | gold | goldenrod | gray | green | greenyellow | grey | honeydew | hotpink | indianred | indigo | ivory | khaki | lavender | lavenderblush | lawngreen | lemonchiffon | lightblue | lightcoral | lightcyan | lightgoldenrodyellow | lightgray | lightgreen | lightgrey | lightpink | lightsalmon | lightseagreen | lightskyblue | lightslategray | lightslategrey | lightsteelblue | lightyellow | lime | limegreen | linen | magenta | maroon | mediumaquamarine | mediumblue | mediumorchid | mediumpurple | mediumseagreen | mediumslateblue | mediumspringgreen | mediumturquoise | mediumvioletred | midnightblue | mintcream | mistyrose | moccasin | navajowhite | navy | oldlace | olive | olivedrab | orange | orangered | orchid | palegoldenrod | palegreen | paleturquoise | palevioletred | papayawhip | peachpuff | peru | pink | plum | powderblue | purple | rebeccapurple | red | rosybrown | royalblue | saddlebrown | salmon | sandybrown | seagreen | seashell | sienna | silver | skyblue | slateblue | slategray | slategrey | snow | springgreen | steelblue | tan | teal | thistle | tomato | turquoise | violet | wheat | white | whitesmoke | yellow | yellowgreen <color-mix()> = color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2}) <rgb()> = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? ) | rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? ) <rgba()> = rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? ) | rgba( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? ) <hsl()> = hsl( <hue>, <percentage>, <percentage>, <alpha-value>? ) | hsl( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <hsla()> = hsla( <hue>, <percentage>, <percentage>, <alpha-value>? ) | hsla( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <hwb()> = hwb( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <lab()> = lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? ) <lch()> = lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? ) <oklab()> = oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? ) <oklch()> = oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? ) <color()> = color( [ from <color> ]? <colorspace-params> [ / [ <alpha-value> | none ] ]? ) <color-interpolation-method> = in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ] <alpha-value> = <number> | <percentage> <hue> = <number> | <angle> <colorspace-params> = [<custom-params> | <predefined-rgb-params> | <xyz-params>] <rectangular-color-space> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 | lab | oklab | xyz | xyz-d50 | xyz-d65 <polar-color-space> = hsl | hwb | lch | oklch <hue-interpolation-method> = [ shorter | longer | increasing | decreasing ] hue <custom-color-space> = <dashed-ident> <custom-params> = <dashed-ident> [ <number> | <percentage> | none ]+ <predefined-rgb-params> = <predefined-rgb> [ <number> | <percentage> | none ]{3} <xyz-params> = <xyz> [ <number> | <percentage> | none ]{3} <predefined-rgb> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 <xyz> = xyz | xyz-d50 | xyz-d65
Примеры
Определение значений заливки для элементов SVG
В этом примере показано, как объявить fill, какое действие оказывает свойство и как свойство CSS fill имеет приоритет над атрибутом fill.
HTML
У нас есть SVG с двумя сложными фигурами, заданными с помощью элементов SVG <polygon> и <path>. Для обоих атрибут fill задан в значение по умолчанию black. Мы добавляем тёмно-серую обводку толщиной #666666 с помощью атрибута 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="#666666"
fill="black" />
<polygon
points="180,10 150,100 220,40 140,40 210,100"
stroke="#666666"
fill="black" />
</svg>
CSS
Мы задаём фигурам в SVG значения fill.
svg {
border: 1px solid;
height: calc(100vh - 20px);
margin-bottom: 10px;
}
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.
svg {
border: 1px solid;
height: calc(100vh - 20px);
margin-bottom: 10px;
}
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
Мы задаём элементам-многоугольникам в SVG значения fill, указывая значение url() и резервное значение.
svg {
border: 1px solid;
height: calc(100vh - 20px);
margin-bottom: 10px;
}
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 для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
fill |
1 |
≤15 |
3 |
15 |
4 |
18 |
4 |
14 |
3.2 |
1.0 |
4.4 |
3.2 |
none |
1 |
≤15 |
3 |
15 |
4 |
18 |
4 |
14 |
3.2 |
1.0 |
4.4 |
3.2 |
См. также
- Атрибут 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–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/fill