css types <image>

The <image> CSS data type represents a two-dimensional image.

Syntax

The <image> data type can be represented with any of the following:

Description

CSS can handle the following kinds of images:

CSS determines an object's concrete size using (1) its intrinsic dimensions; (2) its specified size, defined by CSS properties like <width>, <height>, or <background-size>; and (3) its default size, determined by the kind of property the image is used with:

Kind of Object (CSS Property) Default object size
<background-image> The size of the element's background positioning area
<list-style-image> The size of a 1em character
<border-image-source> The size of the element's border image area
<cursor> The browser-defined size matching the usual cursor size on the client's system
<mask-image> ?
<shape-outside> ?
<mask-border-source> ?
symbols() for @counter-style At risk feature. If supported, the browser-defined size matching the usual cursor size on the client's system
<content> for a pseudo-element (<::after>/<::before>) A 300px × 150px rectangle

The concrete object size is calculated using the following algorithm:

Note: Not all browsers support every type of image on every property. See the browser compatibility section for details.

Accessibility concerns

Browsers do not provide any special information on background images to assistive technology. This is important primarily for screen readers, as a screen reader will not announce its presence and therefore convey nothing to its users. If the image contains information critical to understanding the page's overall purpose, it is better to describe it semantically in the document.

Examples

Valid images

url(test.jpg)               /* A <url>, as long as test.jpg is an actual image */
linear-gradient(blue, red)  /* A <gradient> */
element(#realid)            /* A part of the webpage, referenced with the element() function,
                               if "realid" 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 */

Invalid images

nourl.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 resolutions */

See also