1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
---
title: <image>
slug: Web/CSS/image
tags:
- CSS图像
- CSS图像数据类型
- CSS数据类型
translation_of: Web/CSS/image
---
<p>{{ CSSRef() }}</p>
<h2 id="综述:">综述:</h2>
<p>CSS的<image>数据类型描述的是2D图形。在CSS中有两种类型的图像:简单的静态图像,经常被一个在使用的URL引用,动态生成的图像,比如DOM树的部分元素样式渐变或者计算样式产生。</p>
<p>CSS可以处理以下情形中的不同类型图像:</p>
<ul>
<li><em>具有固有尺寸</em>(大小)的图像,即图像具有自己的原始尺寸(大小),比如一个jpeg格式的图像有他自己的固有尺寸(大小);</li>
<li>图像具有多个固定尺寸,可在一个文件中存在多个不同版本的<em>尺寸,</em>比如有些.ico格式的图像。在这种情况下,图像表现出来的固有尺寸将是这些尺寸较大的一个,也就是最接近外层包含它的容器纵横比的那个图像;</li>
<li><em>没有固定大小</em>但有固定纵横比的图像,像一些矢量图形,比如SVG格式的图像;</li>
<li><em>没有固定大小也没有固定宽高比</em>的图像,比如CSS渐变(图像);</li>
</ul>
<p>CSS确定一个图像对象实际尺寸的依据有三条:(1)图像的原始尺寸;(2)用CSS属性指定的宽和高,比如{{ cssxref("width") }}, {{ cssxref("height") }} or {{ cssxref("background-size") }}中,(3)图像对象默认大小,由图像使用用途的属性类型决定:</p>
<table class="standard-table">
<thead>
<tr>
<th>图像对象类型</th>
<th>默认的图像对象尺寸</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ cssxref("background-image") }}</td>
<td>DOM元素的背景定位的范围尺寸(大小)</td>
</tr>
<tr>
<td>{{ cssxref("list-style-image") }}</td>
<td> 字符的<code>1em尺寸(大小)</code></td>
</tr>
<tr>
<td>{{ cssxref("border-image") }}</td>
<td>DOM元素的边框图像范围尺寸(大小)</td>
</tr>
<tr>
<td>{{ cssxref("cursor") }}</td>
<td>浏览器定义的光标尺寸匹配在使用操作系统上常规的光标尺寸</td>
</tr>
<tr>
<td>用 CSS {{ cssxref("content") }}属性,和CSS伪元素 {{ cssxref("::after") }} 和 {{ cssxref("::before") }}替换元素内容</td>
<td>一个<code>300px</code><code> × 150px</code> 矩形</td>
</tr>
</tbody>
</table>
<p>图像对象的实际尺寸计算算法如下:</p>
<ul>
<li>如果宽度和高度都被指定了,则使用这些值会作为图像对象实际尺寸;</li>
<li>如果指定了宽度和高度中的一个,恰好这个值匹配上了图像固有宽高比中的一个值,则另一个会使用固有宽高比来确定,否则就使用图像的原始大小来确定没定义的那个值;</li>
<li>如果宽度和高度都没有被指定,在不超过图像对象默认尺寸的前提下,将会根据图像的固有宽高比来计算图像对象的实际尺寸;如果图像没有固有宽高比,则会采用图像对象固有宽高比;如果图像对象也没有固有宽高比,则使用图像对象的默认大小(翻译可能会有误,求大神快来翻译);</li>
</ul>
<p>图像可以使用很多CSS属性,比如 {{ cssxref("background-image") }}, {{ cssxref("border-image") }}, {{ cssxref("content") }}, {{ cssxref("list-style-image") }} 和{{ cssxref("cursor") }};</p>
<div class="note"><strong>提示:</strong> 不是所有的浏览器都支持任何类型的图像的任何属性,详情查看<a href="/en-US/docs/Web/CSS/image#Browser_compatibility">浏览器兼容性</a>了全面的条目列表</div>
<h2 class="note" id="语法">语法</h2>
<p>一个<image>CSS数据类型可能表示成如下几种类型:</p>
<ul>
<li>一个图像被引用为CSS {{cssxref("<url>")}}数据类型使用url()方法;</li>
<li>一个CSS{{cssxref("<gradient>")}};</li>
<li>页面的一个部分,定义在{{ cssxref("element", "element()") }}方法中;</li>
</ul>
<h2 id="示例">示例</h2>
<p>以下是有效的图像引用值:</p>
<pre class="notranslate">url(test.jpg) url()方法, 只要test.jpg是图像文件
linear-gradient(to bottom, blue, red) 一个 <gradient>标签
element(#colonne3) 页面的一部分, 使用了element()方法,
如果 colonne3 是存在于页面中的一个元素id即可
</pre>
<p>以下是无效的图像引用值:</p>
<pre class="notranslate">cervin.jpg 图像文件必须使用url()方法定义
url(report.pdf) url()方法指向的文件链接必须是一个图像文件
element(#fakeid) 如果fakeid是一个不存在与页面的元素id
</pre>
<h2 id="Specifications" name="Specifications">规格</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">规格</th>
<th scope="col">状态</th>
<th scope="col">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ SpecName('CSS3 Images', '#image-notation', 'image()') }}</td>
<td>{{ Spec2('CSS3 Images') }}</td>
<td>
<p>在CSS3之前没有明确的定义出<image>数据类型,图像只能被定义在url()方法中。</p>
</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p>{{Compat("css.types.image")}}</p>
<h2 id="参阅:">参阅:</h2>
<ul>
<li><a href="/en-US/docs/Web/Guide/CSS/Using_CSS_gradients" title="Using gradients">Using CSS gradients</a>, {{cssxref("<gradient>")}}, {{cssxref("linear-gradient","linear-gradient()")}}, {{cssxref("radial-gradient","radial-gradient()")}}, {{cssxref("repeating-linear-gradient","repeating-linear-gradient()")}}, {{cssxref("repeating-radial-gradient","repeating-radial-gradient()")}}</li>
<li>{{cssxref("element","element()")}}</li>
</ul>
|