aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/css/blend-mode/index.html
blob: 2c566d0553ac4b348be58785ea9eabdabeff1a9a (plain)
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
---
title: <blend-mode>
slug: Web/CSS/blend-mode
tags:
  - CSS
  - CSS 参考
  - CSS 合成
  - CSS 混合模式
  - 参考
  - 混合模式
  - 颜色
translation_of: Web/CSS/blend-mode
---
<div>{{CSSRef}}</div>

<p><strong><code>&lt;blend-mode&gt;</code></strong> 是一种 <a href="/zh-CN/docs/Web/CSS">CSS</a> <a href="/zh-CN/docs/Web/CSS/CSS_Types">数据类型</a>,用于描述当元素重叠时,颜色应当如何呈现。它被用于 {{cssxref("background-blend-mode")}}{{cssxref("mix-blend-mode")}} 属性。</p>

<p>当层重叠时,混合模式是计算像素最终颜色值的方法,每种混合模式采用前景和背景的颜色值,执行其计算并返回最终的颜色值。最终的可见层是对混合层中的每个重叠像素执行混合模式计算的结果。</p>

<h2 id="语法">语法</h2>

<p><code>&lt;blend-mode&gt;</code> 数据类型被定义为下列关键词中的任意一个。</p>

<h3 id="属性值">属性值</h3>

<dl>
 <dt><code><a id="normal" name="normal">normal</a></code></dt>
 <dd>
 <p>最终颜色永远是顶层颜色,无论底层颜色是什么。<br>
  其效果类似于两张不透明的纸重叠(overlapping)在一起。</p>

 <div id="normal_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: normal;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('normal_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="multiply" name="multiply">multiply</a></code></dt>
 <dd>
 <p>最终颜色为顶层颜色与底层颜色相乘的结果。<br>
  如果叠加黑色层,则最终层必为黑色层,叠加白色层不会造成变化。<br>
  其效果类似于在透明薄膜上重叠印刷的两个图像。</p>

 <div id="multiply_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: multiply;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('multiply_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="screen" name="screen">screen</a></code></dt>
 <dd>
 <p>最终的颜色是<u>反转顶层颜色和底层颜色,将反转后的两个颜色相乘,再反转相加得到的和</u>得到的结果。<br>
  黑色层不会造成变化,白色层导致白色最终层。<br>
  其效果类似于(被投影仪)投射到投影屏幕上的两个图像。</p>

 <div id="screen_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: screen;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('screen_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="overlay" name="overlay">overlay</a></code></dt>
 <dd>
 <p>如果底层颜色比顶层颜色深,则最终颜色是 <code>multiply</code> 的结果,如果底层颜色比顶层颜色浅,则最终颜色是 <code>screen</code> 的结果。<br>
  此混合模式相当于顶层与底层互换后的 <code>hard-light</code></p>

 <div id="overlay_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: overlay;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('overlay_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="darken" name="darken">darken</a></code></dt>
 <dd>
 <p>最终颜色是由每个颜色通道下,顶底两层颜色中的最暗值所组成的颜色。</p>

 <div id="darken_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: darken;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('darken_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="lighten" name="lighten">lighten</a></code></dt>
 <dd>
 <p>最终颜色是每个颜色通道下,顶底两层颜色中的最亮值所组成的颜色。</p>

 <div id="lighten_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: lighten;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('lighten_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="color-dodge" name="color-dodge">color-dodge</a></code></dt>
 <dd>
 <p>最终颜色是将底部颜色除以顶部颜色的反色的结果。<br>
  黑色前景不会造成变化。前景如果是背景的反色,会得到白色(fully lit color,完全亮起的颜色,应当为白色)。<br>
  此混合模式类似于 <code>screen</code>,但是,前景只需要和背景的反色一样亮,最终图像就会变为全白。</p>

 <div id="color-dodge_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: color-dodge;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('color-dodge_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="color-burn" name="color-burn">color-burn</a></code></dt>
 <dd>
 <p>最终颜色是<u>反转底部颜色,将反转后的值除以顶部颜色,再反转除以后的值</u>得到的结果。<br>
  白色的前景不会导致变化,前景如果是背景的反色,会得到黑色。<br>
  此混合模式类似于 <code>multiply</code>,但是,前景只需要和背景的反色一样暗,最终图像就会变为全黑。</p>

 <div id="color-burn_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: color-burn;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('color-burn_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="hard-light" name="hard-light">hard-light</a></code></dt>
 <dd>
 <p>如果顶层颜色比底层颜色深,则最终颜色是 <code>multiply</code> 的结果,如果顶层颜色比底层颜色浅,则最终颜色是 <code>screen</code> 的结果。<br>
  此混合模式相当于顶层与底层互换后的 <code>overlay</code><br>
  其效果类似于在背景层上(用前景层)打出一片<em>刺眼</em>的聚光灯。</p>

 <div id="hard-light_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: hard-light;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('hard-light_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="soft-light" name="soft-light">soft-light</a></code></dt>
 <dd>
 <p>最终颜色类似于 <code>hard-light</code> 的结果,但更加柔和一些。<br>
  此混合模式的表现类似 <code>hard-light</code><br>
  其效果类似于在背景层上(用前景层)打出一片<em>发散</em>的聚光灯。</p>

 <div id="soft-light_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: soft-light;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('soft-light_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="difference" name="difference">difference</a></code></dt>
 <dd>
 <p>最终颜色是 两种颜色中较浅的颜色 减去 两种颜色中较深的颜色 得到的结果。<br>
  黑色层不会造成变化,而白色层会反转另一层的颜色。</p>

 <div id="difference_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: difference;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('difference_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="exclusion" name="exclusion">exclusion</a></code></dt>
 <dd>
 <p>最终颜色类似于 <code>difference</code>,但对比度更低一些。<br><code>difference</code> 相同,黑色层不会造成变化,而而白色层会反转另一层的颜色。</p>

 <div id="exclusion_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: exclusion;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('exclusion_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="hue" name="hue">hue</a></code></dt>
 <dd>
 <p>最终颜色由顶部颜色的<em>色调</em>和底部颜色的<em>饱和度</em><em>亮度</em>组成。</p>

 <div id="hue_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: hue;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('hue_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="saturation" name="saturation">saturation</a></code></dt>
 <dd>
 <p>最终颜色由顶部颜色的<em>色调</em>和底部颜色的<em>饱和度</em><em>发光度</em>组成。<br>
  饱和度为零的纯灰色背景层不会造成变化。</p>

 <div id="saturation_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: saturation;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('saturation_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="color" name="color">color</a></code></dt>
 <dd>
 <p>最终颜色由顶部颜色的<em>色调</em><em>饱和度</em>和底部颜色的<em>亮度</em>组成。<br>
  此效果保留了灰度级别,可用于为前景着色。(The effect preserves gray levels and can be used to colorize the foreground.)</p>

 <div id="color_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: color;
}</pre>
 </div>
 </div>

 <p>{{ EmbedLiveSample('color_example', "300", "300") }}</p>
 </dd>
 <dt><code><a id="luminosity" name="luminosity">luminosity</a></code></dt>
 <dd>
 <p>最终颜色由顶部颜色的亮度和底部颜色的色调和饱和度组成。<br>
  此混合模式相当于顶层与底层互换后的 <code>color</code></p>

 <div id="luminosity_example">
 <div class="hidden">
 <pre class="brush: html">&lt;div id="div"&gt;&lt;/div&gt;</pre>

 <pre class="brush: css">#div {
  width: 300px;
  height: 300px;
  background: url('https://mdn.mozillademos.org/files/8543/br.png'),
              url('https://mdn.mozillademos.org/files/8545/tr.png');
  background-blend-mode: luminosity;
}</pre>
 </div>

 <p>{{ EmbedLiveSample('luminosity_example', "300", "300") }}</p>
 </div>
 </dd>
</dl>

<h2 id="混合模式的插值">混合模式的插值</h2>

<p>混合模式之间的更改暂无插值。任何变化都会立即发生。</p>

<h2 id="规范">规范</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('Compositing', '#ltblendmodegt', '&lt;blend-mode&gt;') }}</td>
   <td>{{ Spec2('Compositing') }}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="浏览器兼容性">浏览器兼容性</h2>



<p>{{Compat("css.types.blend-mode")}}</p>

<h2 id="另请参阅">另请参阅</h2>

<ul>
 <li>使用此类型的属性值:{{cssxref("background-blend-mode")}}{{cssxref("mix-blend-mode")}}</li>
</ul>

<p>其他网站上对各种混合模式的说明与介绍:</p>

<ul>
 <li>Wikipedia 上的<a href="http://en.wikipedia.org/wiki/Blend_modes">混合模式</a>(暂无中文)</li>
 <li>Adobe 提供的 <a href="https://helpx.adobe.com/photoshop/using/blending-modes.html">Blending modes in Adobe Photoshop</a>(英文)</li>
</ul>