You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否有-webkit-mask-attachment替代方案?实现固定遮罩效果

纯CSS实现区域差异化文本阴影效果

核心思路

利用固定定位伪元素+背景遮罩+混合模式实现,完全依赖CSS特性,无需JS滚动监听。

实现步骤

  • 给段落容器设置相对定位,作为伪元素的定位基准
  • 用两个伪元素分层:
    • ::after生成带正常阴影的文本层,作为基础显示
    • ::before生成带替代阴影的文本层,固定在屏幕中央,通过混合模式和裁剪只在指定区域覆盖基础层
  • 实际文本放在容器内,设置最高层级确保正常显示

代码示例

.text-container {
  position: relative;
  font-size: 24px;
  line-height: 1.6;
  padding: 20px;
  z-index: 2; /* 确保文本层级最高 */
}

/* 正常阴影文本层 */
.text-container::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: transparent;
  text-shadow: 0 2px 4px rgba(0,0,0,0.3); /* 正常阴影样式 */
  z-index: 0;
}

/* 替代阴影文本层(屏幕中央区域) */
.text-container::before {
  content: attr(data-text);
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 300px;
  height: 200px;
  color: transparent;
  text-shadow: 0 2px 8px rgba(255,0,0,0.8); /* 替代阴影样式 */
  background: red; /* 标记生效区域,可设为transparent隐藏 */
  z-index: 1;
  mix-blend-mode: lighten; /* 让该区域阴影覆盖正常阴影 */
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
<div class="text-container" data-text="这里是需要显示的段落文本,内容可以很长,滚动页面时,只有屏幕中央区域会显示红色阴影,其余区域保持正常灰色阴影。重复测试:这里是需要显示的段落文本,内容可以很长,滚动页面时,只有屏幕中央区域会显示红色阴影,其余区域保持正常灰色阴影。">
  这里是需要显示的段落文本,内容可以很长,滚动页面时,只有屏幕中央区域会显示红色阴影,其余区域保持正常灰色阴影。重复测试:这里是需要显示的段落文本,内容可以很长,滚动页面时,只有屏幕中央区域会显示红色阴影,其余区域保持正常灰色阴影。
</div>

原理说明

  • data-text属性同步伪元素与实际文本内容,避免重复编写
  • 固定定位的::before始终停留在屏幕中央,不随页面滚动移动
  • mix-blend-mode: lighten让指定区域的替代阴影覆盖下层正常阴影,非指定区域则显示基础层阴影
  • 实际文本层级最高,不会被伪元素遮挡

调整提示

  • 若不需要红色标记,将::before的background设为transparent即可,保留宽高限定生效范围
  • 可根据需求修改阴影样式、区域尺寸和混合模式,适配不同场景

内容的提问来源于stack exchange,提问作者little dutch boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:32:14