Тип CSS `<image>`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
<image> — это CSS-тип данных, представляющий двухмерное изображение.
Синтаксис
Тип данных <image> может быть представлен одним из следующих способов:
- Изображение, обозначенное типом данных
<url> - Тип данных
<gradient> - Часть веб-страницы, определённая функцией
element() - Изображение, фрагмент изображения или сплошная область цвета, определённые функцией
image() - Смешение двух или более изображений, определённое функцией
cross-fade(). - Выбор изображений на основе разрешения, определённый функцией
image-set(). - Изображение, созданное paint-worklet с помощью функции
paint().
Описание
CSS поддерживает следующие типы изображений:
- Изображения с внутренними размерами (естественным размером), например JPEG, PNG или другой растровый формат.
- Изображения с несколькими внутренними размерами, существующими в нескольких версиях внутри одного файла, например некоторые форматы .ico. (В этом случае внутренними размерами будут размеры изображения с наибольшей площадью и соотношением сторон, наиболее близким к соотношению сторон содержащего его блока.)
- Изображения без внутренних размеров, но с внутренним соотношением сторон между шириной и высотой, например SVG или другой векторный формат.
- Изображения, у которых нет ни внутренних размеров, ни внутреннего соотношения сторон, например градиент CSS.
Фактический размер
CSS определяет фактический размер объекта с учётом (1) его внутренних размеров; (2) его заданного размера, определённого свойствами CSS, такими как width, height или background-size; и (3) его размера по умолчанию, который зависит от свойства, с которым используется изображение:
| Тип объекта (свойство CSS) | Размер объекта по умолчанию |
|---|---|
background-image | Размер области позиционирования фона элемента |
list-style-image | Размер символа 1em |
border-image-source | Размер области изображения границы элемента |
cursor | Размер, определяемый браузером и соответствующий обычному размеру курсора в системе клиента |
mask-image | ? |
shape-outside | ? |
mask-border-source | ? |
symbols() для @counter-style | Функция, поддержка которой может быть прекращена. Если она поддерживается, размер определяется браузером и соответствует обычному размеру курсора в системе клиента |
content для псевдоэлемента (::after/::before) | Прямоугольник размером 300px × 150px |
Фактический размер объекта вычисляется по следующему алгоритму:
- Если заданный размер определяет и ширину, и высоту, эти значения используются в качестве фактического размера объекта.
- Если заданный размер определяет только ширину или только высоту, недостающее значение определяется с учётом внутреннего соотношения сторон, если оно есть, внутренних размеров, если заданное значение им соответствует, или размера объекта по умолчанию для недостающего значения.
- Если заданный размер не определяет ни ширину, ни высоту, фактический размер объекта вычисляется так, чтобы соответствовать внутреннему соотношению сторон изображения, но не превышать размер объекта по умолчанию ни по одному из измерений. Если у изображения нет внутреннего соотношения сторон, используется внутреннее соотношение сторон объекта, к которому оно применяется; если у этого объекта его нет, недостающая ширина или высота берётся из размера объекта по умолчанию.
Примечание: Не все браузеры поддерживают все типы изображений для каждого свойства. Подробности см. в разделе совместимость с браузерами.
Доступность
Браузеры не предоставляют вспомогательным технологиям специальных сведений об фоновых изображениях. Это особенно важно для программ чтения с экрана: они не сообщают о наличии такого изображения и, следовательно, не передают эту информацию пользователям. Если изображение содержит сведения, критически важные для понимания общего назначения страницы, лучше описать его семантически в документе.
- Пояснения MDN к руководству WCAG 1.1
-
[Понимание критерия успеха 1.1.1 W3C: понимание WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/text-equiv-all.html)
Формальный синтаксис
<image> = <url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient> <image()> = image( <image-tags>? [ <image-src>? , <color>? ]! ) <image-set()> = image-set( <image-set-option># ) <element()> = element( <id-selector> ) <paint()> = paint( <ident>, <declaration-value>? ) <cross-fade()> = cross-fade( <cf-mixing-image> , <cf-final-image>? ) <gradient> = <linear-gradient()> | <repeating-linear-gradient()> | <radial-gradient()> | <repeating-radial-gradient()> | <conic-gradient()> | <repeating-conic-gradient()> <image-tags> = ltr | rtl <image-src> = <url> | <string> <color> = <color-base> | currentColor | <system-color> | <light-dark()> | <deprecated-system-color> <image-set-option> = [ <image> | <string> ] [ <resolution> || type(<string>) ] <id-selector> = <hash-token> <cf-mixing-image> = <percentage>? && <image> <cf-final-image> = <image> | <color> <linear-gradient()> = linear-gradient( [ <linear-gradient-syntax> ] ) <repeating-linear-gradient()> = repeating-linear-gradient( [ <linear-gradient-syntax> ] ) <radial-gradient()> = radial-gradient( [ <radial-gradient-syntax> ] ) <repeating-radial-gradient()> = repeating-radial-gradient( [ <radial-gradient-syntax> ] ) <conic-gradient()> = conic-gradient( [ <conic-gradient-syntax> ] ) <repeating-conic-gradient()> = repeating-conic-gradient( [ <conic-gradient-syntax> ] ) <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 <image> = <url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient> <linear-gradient-syntax> = [ [ <angle> | <zero> | to <side-or-corner> ] || <color-interpolation-method> ]? , <color-stop-list> <radial-gradient-syntax> = [ [ [ <radial-shape> || <radial-size> ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <color-stop-list> <conic-gradient-syntax> = [ [ [ from [ <angle> | <zero> ] ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <angular-color-stop-list> <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}) <side-or-corner> = [ left | right ] || [ top | bottom ] <color-interpolation-method> = in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ] <color-stop-list> = <linear-color-stop> , [ <linear-color-hint>? , <linear-color-stop> ]#? <radial-shape> = circle | ellipse <radial-size> = <radial-extent> | <length [0,∞]> | <length-percentage [0,∞]>{2} <position> = [ [ left | center | right ] || [ top | center | bottom ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]? | [ [ left | right ] <length-percentage> ] && [ [ top | bottom ] <length-percentage> ] ] <angular-color-stop-list> = <angular-color-stop> , [ <angular-color-hint>? , <angular-color-stop> ]#? <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 ] ]? ) <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> <linear-color-stop> = <color> <color-stop-length>? <linear-color-hint> = <length-percentage> <radial-extent> = closest-corner | closest-side | farthest-corner | farthest-side <length-percentage> = <length> | <percentage> <angular-color-stop> = <color> <color-stop-angle>? <angular-color-hint> = <angle-percentage> | <zero> <alpha-value> = <number> | <percentage> <hue> = <number> | <angle> <colorspace-params> = [<custom-params> | <predefined-rgb-params> | <xyz-params>] <color-stop-length> = <length-percentage>{1,2} <color-stop-angle> = [ <angle-percentage> | <zero> ]{1,2} <angle-percentage> = <angle> | <percentage> <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
Примеры
Допустимые изображения
url("test.jpg") /* A <url>, as long as test.jpg is an actual image */
linear-gradient(blue, red) /* A <gradient> */
element(#real-id) /* A part of the webpage, referenced with the element() function,
if "real-id" is an existing ID on the page */
image(ltr "arrow.png#xywh=0,0,16,16", red)
/* A section 16x16 section of <url>, starting from the top, left of the original
image as long as arrow.png is a supported image, otherwise a solid
red swatch. If language is rtl, the image will be horizontally flipped. */
cross-fade(20% url("twenty.png"), url("eighty.png"))
/* cross faded images, with twenty being 20% opaque
and eighty being 80% opaque. */
image-set("test.jpg' 1x, 'test-2x.jpg" 2x)
/* a selection of images with varying resolutions */
Недопустимые изображения
"no-url.jpg" /* An image file must be defined using the url() function. */
url("report.pdf") /* A file pointed to by the url() function must be an image. */
element(#fakeid) /* An element ID must be an existing ID on the page. */
image(z.jpg#xy=0,0) /* The spatial fragment must be written in the format of xywh=#,#,#,# */
image-set("cat.jpg" 1x, "dog.jpg" 1x) /* every image in an image set must have a different resolution */
Спецификации
| Спецификация |
|---|
| Модуль изображений CSS, уровень 3 # image-values |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
image |
1 |
12 |
1 |
2 |
1 |
18 |
4 |
11 |
1 |
1.0 |
4.4 |
1 |
cross-fade |
17Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
79Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
Нет |
15Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
10Поддерживается только исходная реализация с двумя изображениями и процентными значениями.5.1Поддерживается только исходная реализация с двумя изображениями и процентными значениями. |
18Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
Нет |
14Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
9.3Поддерживается только исходная реализация с двумя изображениями и процентными значениями.5Поддерживается только исходная реализация с двумя изображениями и процентными значениями. |
1.0Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
4.4Поддерживается только исходная реализация с двумя изображениями и процентными значениями.Сведения о поддержке функции cross-fade() без префикса см. в ошибке 40470742. |
9.3Поддерживается только исходная реализация с двумя изображениями и процентными значениями.5Поддерживается только исходная реализация с двумя изображениями и процентными значениями. |
element |
Нет |
Нет |
57
29–57Использование-moz-element() ограничено свойствами background-image, background, border-image и border-image-source. |
Нет |
Нет |
Нет |
60
29–60Использование-moz-element() ограничено свойствами background-image, background, border-image и border-image-source. |
Нет |
Нет |
Нет |
Нет |
Нет |
filter |
Нет |
Нет |
Нет |
Нет |
9.1
9–9.1
|
Нет |
Нет |
Нет |
9.3
9–9.3
|
Нет |
Нет |
9.3
9–9.3
|
image-set |
113
113
20–113Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
113
113
79–113Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
89
90
88–89Функцияtype() не поддерживается в качестве аргумента для image-set(). |
99
99
15–99Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
17
17
14–17Функцияtype() не поддерживается в качестве аргумента для image-set().14–17Функцияtype() не поддерживается в качестве аргумента для image-set().10.1–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения.6–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
113
113
25–113Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
89
90
88–89Функцияtype() не поддерживается в качестве аргумента для image-set(). |
76
76
14–76Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
17
17
14–17Функцияtype() не поддерживается в качестве аргумента для image-set().14–17Функцияtype() не поддерживается в качестве аргумента для image-set().10.3–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения.6–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
23.0
23.0
1.5–23.0Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
113
113
4.4–113Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
17
17
14–17Функцияtype() не поддерживается в качестве аргумента для image-set().14–17Функцияtype() не поддерживается в качестве аргумента для image-set().10.3–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения.6–14Поддерживаются только изображенияurl, а x — единственная поддерживаемая единица разрешения. |
paint |
65 |
79 |
Нет |
52 |
Нет |
65 |
Нет |
47 |
Нет |
9.2 |
65 |
Нет |
См. также
© 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/Values/image