Spec-Zone.ru › CSS

Тип 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.
4–29Использование -moz-element() ограничено свойствами background-image и background.
Нет
Нет
Нет
60
29–60Использование -moz-element() ограничено свойствами background-image, background, border-image и border-image-source.
4–29Использование -moz-element() ограничено свойствами background-image и background.
Нет
Нет
Нет
Нет
Нет
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
Нет

См. также

  • <gradient>
  • element()
  • image()
  • image-set()
  • cross-fade()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API