css 的 mask-image 本身不支持直接旋转,但可通过将遮罩层与背景层分离为两个嵌套元素,并对遮罩容器应用 transform: rotate() 实现精准控制。
css 的 mask-image 本身不支持直接旋转,但可通过将遮罩层与背景层分离为两个嵌套元素,并对遮罩容器应用 transform: rotate() 实现精准控制。
要实现 mask-image 的独立旋转(即仅旋转遮罩图案,而不旋转整个被遮罩元素或其背景),核心思路是**解耦遮罩与内容渲染层级**:将背景(如渐变)和遮罩图像分别置于不同 DOM 元素中,使遮罩层成为一个纯透明/白色覆盖层,再对其单独施加 `transform`。具体做法如下:
✅ 示例代码(优化版,含兼容性与可维护性增强):
.water { position: absolute; width: 100%; height: 100rem; margin-top: -2.55rem; background: linear-gradient( 180deg, rgba(53, 99, 233, 0.98) 1.17%, rgba(25, 53, 136, 0.99) 36.14%, #000D34 96.66% );}.light-layer { position: absolute; top: 0; left: 0; right: 0; bottom: 0; /* 铺满父容器 */ background: white; /* 必须为不透明白色,确保 mask 生效 */ mask-image: url("https://i.ibb.co/FzmCjLL/Jqtz.png"); mask-repeat: no-repeat; mask-composite: exclude; mask-position: 50% 20%; mask-size: contain; /* 推荐添加,避免图像拉伸失真 */ transform: rotate(30deg); /* ✅ 此处旋转仅作用于遮罩图像 */ /* 可选:提升渲染性能 */ will-change: transform;}
⚠️ 注意事项:
通过这种结构分离 + 变换委托的设计,你既能保持背景布局稳定,又能自由操控遮罩方向——这是目前兼容性最佳、语义最清晰的纯 CSS 解决方案。
立即学习“前端免费学习笔记(深入)”;