CSS 数据类型

CSS 数据类型 <image> 表示二维图像。

数据类型 <image> 可以用以下任意值表示:

  • url() 数据类型定义的图像

  • <gradient>数据类型

  • 网页的一部分,由element()函数定义

  • 图像、图像片段或纯色块,由 image() 函数定义

  • cross-fade() 函数定义的两个或多个图像混合。

  • 根据 image-set() 函数定义的分辨率选择的图像选择。

语法

<image> = <url> | <image-list> | <element-reference>  | <gradient></gradient> 

CSS 可以处理以下类型的图像:

  • 所有具有固有尺寸的图像,即具有自然尺寸的图像,例如JPEG、PNG或其他raster format的图像.

  • 具有多个内在维度的所有图像,存在于单个文件中的多个版本

  • 具有没有固有尺寸,但其宽度和高度之间具有固有的纵横比,例如 SVG 或 矢量格式。

  • 所有既没有固有尺寸,也没有固有纵横比的图像,例如 CSS 渐变。

对象的具体尺寸由以下因素确定:

  • 内在尺寸

  • 指定大小,由宽度、高度或背景大小等 CSS 属性定义

  • 默认大小,由图像所使用的属性类型确定。

下表显示了基于 CSS 属性的图像类型:

对象类型(CSS 属性)默认对象大小
background-image大小元素的背景定位区域
list-style-image1em字符的大小
border-image-source 元素边框图像区域的大小
cursor浏览器定义的大小与客户端系统上通常的光标大小相匹配
mask-image用作遮罩层的图像。
shape-outside定义与内联内容相邻的形状
mask-border-source设置图像以创建元素的蒙版边框
symbols() for @counter-style如果支持,浏览器定义的大小与屏幕上通常的光标大小相匹配客户端系统
伪元素内容(::after / ::before)300px × 150px 矩形

CSS <image> - 计算图像尺寸

图像的具体尺寸是根据以下算法定义或计算的:

  • 当指定的大小同时定义宽度和高度时,这些值可用于确定对象的具体大小。

  • 当指定的大小仅定义宽度或仅定义高度,缺少的值使用固有比率确定(如果可用);如果指定的值匹配,则为固有尺寸,或者为该缺失值的对象的默认尺寸。

  • 当指定的尺寸既不定义宽度也不定义高度时,则对物体进行测量,使其与图像的固有纵横比相匹配,但不会超过任何维度的尺寸。如果图像没有固有纵横比,则使用其所应用的对象的固有纵横比。例如,如果对象也没有固有的宽高比,则缺少的宽度或高度将从默认对象大小中获取。

辅助功能问题:浏览器未向辅助技术提供有关背景图像的任何特殊信息。这对于屏幕阅读器来说非常重要,因为屏幕阅读器不会宣布任何有关背景图像存在的信息,因此无法传达任何有关背景图像的信息。如果图像包含一些对于理解整个页面至关重要的信息,则会被错过。因此,建议在文档中对重要信息进行语义描述。

<image> = <url> | <gradient>
/* Valid images */
url(sample.jpg)                                 /* 一个<url>,只要sample.jpg是实际图像。 */
linear-gradient(red, yellow)                    /* A <gradient> */
element(#realid)                                /* 网页的一部分,用 element() 函数引用,如果“realid”是页面上现有的 ID。 */

cross-fade(20% url(test.png), url(test1.png))   /* 交叉淡入淡出的图像,test为 20% 不透明
                                                 test1 80% 不透明。
 */
image-set('test.jpg' 1x, 'test-2x.jpg' 2x)      /* 选择不同分辨率的图像。 */
/*Invalid images */
sample.jpg                                      /* 必须使用 url() 函数定义图像文件。 */
url(test.pdf)                                   /* url() 函数指向的文件必须是图像。 */
element(#fakeid)                                /* 元素 ID 必须是页面上现有的 ID。 */
image(z.jpg#xy=0,0)                             /* 空间片段必须按照 xywh=#,#,#,# 的格式写入 */
image-set('test1.jpg' 1x, 'test2.jpg' 1x)       /* 图像集中的每个图像必须具有不同的分辨率 */ 

CSS <image>: 与 url() 一起使用

以下示例演示了 <image> 的使用使用 url() 函数定义图像的数据类型。通过CSS属性background-image将图像用作背景:

<html>
<head>
<style>
   div {
      background-image: url(/css/images/border.png);
      width: 200px;
      height: 200px;
      border: 3px solid black;
   }
</style>
</head>
<body>
   <div></div>
</body>
</html> 

在上面的示例中,使用了url()函数,该函数又使用数据类型<image>将图像设置为背景用于 div 元素。

CSS <image>: 与 Linear-gradient() 一起使用

以下示例演示如何使用 <image> 数据类型通过 Linear-gradient() 函数定义图像。通过CSS属性background-image将图像用作背景:

<html>
<head>
<style>
   div {
      background-image: linear-gradient(red, yellow, blue, green, pink);
      width: 200px;
      height: 200px;
      border: 3px solid black;
   }
</style>
</head>
<body>
   <div></div>
</body>
</html> 

在上面的示例中,使用了 Linear-gradient() 函数,该函数又使用数据类型 <image> 来设置图像作为 div 元素的背景。

CSS <image>: 与 cross-fade() 一起使用

以下示例演示如何使用 <image> 数据类型通过 cross-fade() 定义图像 功能。该图像通过CSS属性background-image用作背景:

<html>
<head>
<style>
   div {
      background-image: -webkit-cross-fade(url(/css/images/border.png), url(/css/images/tree.jpg), 25%);
      background-image: cross-fade(url(/css/images/border.png), url(/css/images/tree.jpg), 25%);
      width: 300px;
      height: 300px;
      border: 3px solid black;
   }
</style>
</head>
<body>
   <div></div>
</body>
</html> 

在上面的示例中,使用了cross-fade()函数,该函数又使用数据类型<image>来设置混合作为 div 元素背景的图像。