mix-blend-mode: screen 是实现文字镂空透出背景视频最轻量可靠的方式,纯黑文字与视频亮区混合后“去黑留亮”,无需 background-clip、伪元素或遮罩,结构扁平(video 直包 text)、iOS 需 will-change 加速且 pointer-events: none 防交互遮挡。

mix-blend-mode 是实现文字镂空透出背景视频最轻量、最可靠的方式——不需要 background-clip: text,不依赖 text-fill-color,也不用伪元素遮罩。关键在于选对混合模式,并控制好文字与背景的色彩关系。
为什么不用 background-clip: text?
在视频背景上用 background-clip: text 会遇到三个硬伤:background-image 必须直接写在文字元素上,但 <video></video> 是独立标签,无法作为 background-image;强行用 object-fit + position: absolute 叠加,会导致文字层和视频层不同步缩放或裁剪;iOS Safari 对 background-clip: text 在 transform 或 will-change 场景下渲染异常,文字突然变实色。
screen 模式是视频背景上的首选
mix-blend-mode: screen 的数学逻辑是:结果色 = 1 − (1 − 混合色) × (1 − 基色),等价于“去黑留亮”。它让黑色区域完全透明(露出视频),白色区域保留原色(文字本身不可见),正好适配视频常含暗部的特点。
- 文字颜色设为
#000(纯黑),背景视频里有亮区时,文字位置就“挖空”出视频内容 - 给文字加一层浅灰或白色背景(如
background-color: #fff)反而会遮挡视频,必须去掉 - 父容器需设置
overflow: hidden防止文字溢出后混合到页面其他区域 - 移动端需加
will-change: transform触发硬件加速,避免 iOS 上混合闪烁
结构越扁平,镂空越稳
不要套多层 div、不要用 ::before/::after 模拟文字层、不要把视频包进 background。最小可靠结构就是:一个 <video></video> 作为父容器,子元素直接是 <h1></h1> 或 <p></p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板"><img
src="https://img.php.cn/upload/webcode/000/000/018/178607072210981.jpg" alt="CSS婚礼策划服务机构宣传网站模板" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板">CSS婚礼策划服务机构宣传网站模板</a>
<p>CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。</p>
</div>
<a href="/xiazai/code/12093" title="CSS婚礼策划服务机构宣传网站模板" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>,仅靠 mix-blend-mode 混合。
立即学习“前端免费学习笔记(深入)”;
video {
width: 100%;
height: 100vh;
object-fit: cover;
}
video h1 {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #000;
font-size: 4rem;
mix-blend-mode: screen;
pointer-events: none;
margin: 0;
}
注意 pointer-events: none 是为了防止文字挡住视频的点击/播放交互;font-size 建议用 rem 或 vw,避免在不同分辨率下镂空区域错位。
慎用 multiply 和 color-dodge
multiply 虽然在静态图上常用,但在视频中容易失效:只要视频某一帧出现大面积白色(比如闪光、字幕白底),文字区域就会变黑块,失去镂空效果;color-dodge 更危险——遇到视频里的深色区域(如夜景、阴影),直接过曝成全白,UI 瞬间崩坏。只有 screen 在明暗动态变化的视频流中保持行为可预测。
复杂点在于视频编码格式和 alpha 通道支持:Safari 不支持 WebM with alpha,MP4 无透明通道,所以“镂空”本质是颜色混合而非真透明。这意味着——你不能指望它在视频叠加粒子动画时仍保持边缘锐利,那需要 WebGL 方案。

















