CSS mix-blend-mode 属性决定元素的内容应如何与其父元素的内容以及元素的背景混合。
属性值
<blend-mode>: 定义要使用的混合模式。
plus-darker: 使用 plus-darker 合成运算符进行混合。
plus-lighter: 与 plus-lighter 合成操作符混合。交叉淡入淡出效果非常有用,因为当两个重叠的项目以相反方向设置不透明度动画时,它们可以消除不需要的闪烁。
适用范围
所有元素。
语法
mix-blend-mode: normal;
mix-blend-mode: multiply;
mix-blend-mode: screen;
mix-blend-mode: overlay;
mix-blend-mode: darken;
mix-blend-mode: lighten;
mix-blend-mode: color-dodge;
mix-blend-mode: color-burn;
mix-blend-mode: hard-light;
mix-blend-mode: soft-light;
mix-blend-mode: difference;
mix-blend-mode: exclusion;
mix-blend-mode: hue;
mix-blend-mode: saturation;
mix-blend-mode: color;
mix-blend-mode: luminosity;
mix-blend-mode: plus-darker;
mix-blend-mode: plus-lighter;
CSS mix-blend-mode: 不同的值
以下示例演示了不同 mix-blend-mode 的效果背景框和前框 -
<html>
<head>
<style>
.box {
width: 200px;
height: 150px;
position: relative;
margin: 10px;
padding: 5px;
border: 2px solid black;
}
.background-box {
width: 100px;
height: 100px;
background-color: blue;
}
.front-box {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
top: 40px;
left: 30px;
}
.mix-blend-mode-box {
display: flex;
flex-wrap: wrap;
margin-bottom: 20px;
}
.mode-container {
display: flex;
flex-direction: column;
margin-right: 20px;
}
h3 {
margin-bottom: 10px;
}
.normal-mode {
mix-blend-mode: normal;
}
.multiply-mode {
mix-blend-mode: multiply;
}
.screen-mode {
mix-blend-mode: screen;
}
.darken-mode {
mix-blend-mode: darken;
}
.lighten-mode {
mix-blend-mode: lighten;
}
.overlay-mode {
mix-blend-mode: overlay;
}
.color-dodge-mode {
mix-blend-mode: color-dodge;
}
.back-burn {
background-color: orange;
}
.color-burn-mode {
background-color: blue;
mix-blend-mode: color-burn;
}
.hard-light-mode {
mix-blend-mode: hard-light;
}
.back-hard {
background-color: red;
}
.soft-light-mode {
background-color: blue;
mix-blend-mode: soft-light;
}
.difference-mode {
background-color: blue;
mix-blend-mode: difference;
}
.exclusion-mode {
background-color: blue;
mix-blend-mode: difference;
}
.hue-mode {
background-color: blue;
mix-blend-mode: hue;
}
.saturation-mode {
blend-mode: saturation;
}
.color-mode {
background-color: blue;
mix-blend-mode: hue;
}
.luminosity-mode {
background-color: blue;
mix-blend-mode: luminosity;
}
.plus-darker-mode {
background-color: blue;
mix-blend-mode: plus-darker;
}
.plus-lighter-mode {
background-color: blue;
mix-blend-mode: plus-lighter;
}
</style>
</head>
<body>
<div class="mix-blend-mode-box">
<div class="mode-container">
<h3>mix-blend-mode: normal</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box normal-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: multiply</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box multiply-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: screen</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box screen-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: darken</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box darken-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: lighten</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box lighten-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: overlay</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box overlay-mode"></div>
</div>
</div>
</div>
<div class="mix-blend-mode-box">
<div class="mode-container">
<h3>mix-blend-mode: color-dodge</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box color-dodge-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: color-burn</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box color-burn-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: hard-light</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box hard-light-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: soft-light</h3>
<div class="box">
<div class="background-box back-hard"></div>
<div class="front-box soft-light-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: difference</h3>
<div class="box">
<div class="background-box back-hard"></div>
<div class="front-box difference-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: exclusion</h3>
<div class="box">
<div class="background-box back-hard"></div>
<div class="front-box exclusion-mode"></div>
</div>
</div>
</div>
<div class="mix-blend-mode-box">
<div class="mode-container">
<h3>mix-blend-mode: hue</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box hue-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: saturation</h3>
<div class="box">
<div class="background-box"></div>
<div class="front-box saturation-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: color</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box color-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: luminosity</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box luminosity-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: plus-darker</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box plus-darker-mode"></div>
</div>
</div>
<div class="mode-container">
<h3>mix-blend-mode: plus-lighter</h3>
<div class="box">
<div class="background-box back-burn"></div>
<div class="front-box plus-lighter-mode"></div>
</div>
</div>
</div>
</body>
</html>
CSS mix-blend-mode: 使用 HTML
以下示例演示如何在屏幕混合模式下混合圆形颜色 -
<html>
<head>
<style>
.box {
width: 100px;
height: 100px;
border-radius: 50%;
mix-blend-mode: screen;
position: absolute;
}
.box1 {
background: blueviolet;
}
.box2 {
background: lightcoral;
left: 50px;
}
.box3 {
background: green;
left: 30px;
top: 50px;
}
.union {
isolation: isolate;
position: relative;
}
</style>
</head>
<body>
<div class="union">
<div class="box box1"></div>
<div class="box box2"></div>
<div class="box box3"></div>
</div>
</body>
</html>
CSS mix-blend-mode: 使用 SVG
以下示例演示基于 SVG 屏幕混合模式的颜色混合模式 -
<html>
<head>
<style>
ellipse {
mix-blend-mode: screen;
}
.union {
isolation: isolate;
}
</style>
</head>
<body>
<svg>
<g class="union">
<ellipse cx="50" cy="40" rx="50" ry="30" fill="blueviolet" />
<ellipse cx="90" cy="40" rx="50" ry="30" fill="lightcoral" />
<ellipse cx="70" cy="70" rx="50" ry="30" fill="green" />
</g>
</svg>
</body>
</html>
CSS mix-blend-mode: 使用 Text
以下示例演示了不同 mix-blend-mode 对绿色容器内文本的影响 -
<html>
<head>
<style>
.container {
background-color: green;
}
p {
font: italic normal bold 30px Arial, sans-serif;;
color: orange;
padding: 10px;
margin: 0;
}
.multiply-mode {
mix-blend-mode: multiply;
}
.screen-mode {
mix-blend-mode: screen;
}
.hard-light-mode {
mix-blend-mode: difference;
}
</style>
</head>
<body>
<div class="container">
<p>Without blend mode</p>
<p class="multiply-mode">mix-blend-mode: multiply</p>
<p class="screen-mode">mix-blend-mode: screen</p>
<p class="hard-light-mode">mix-blend-mode: difference</p>
</div>
</body>
</html>