h5沉浸式阅读上下页缘柔和渐隐推荐用mask-image实现,通过linear-gradient创建中间可见、上下渐隐的蒙版,配合backdrop-filter增强沉浸感,并支持滚动动态调整和兼容性降级。

在 H5 页面中实现沉浸式阅读模式的上下页缘柔和渐隐,核心是让文字区域两端(顶部和底部)自然“淡出”,不突兀切断内容,同时保持可读性。这不是简单加一层半透明色块,而是要模拟视觉过渡,让边缘内容逐渐融入背景,形成呼吸感。
用 mask-image 实现真正平滑的上下边缘渐隐
这是目前最推荐的方式,比传统伪元素叠加渐变更精准、更柔顺,能避免锯齿和硬边。
- 利用 mask-image: linear-gradient(to bottom, black, transparent, black) 创建一个“中间可见、上下渐隐”的蒙版
- 黑色(
#000)代表完全显示,透明(transparent)代表完全隐藏,中间的过渡区就是柔化带 - 把该蒙版应用在包裹文字的容器上,而不是直接改文字颜色或背景
- 示例代码:
.reading-container {
-webkit-mask-image: linear-gradient(to bottom,
black 0%,
black 20%,
transparent 40%,
transparent 60%,
black 80%,
black 100%);
mask-image: linear-gradient(to bottom,
black 0%,
black 20%,
transparent 40%,
transparent 60%,
black 80%,
black 100%);
}其中 20%–40% 和 60%–80% 是上下两个柔化区间,数值可按实际行高微调(比如小屏设备可缩窄到 15%–35%)。
配合 backdrop-filter 提升沉浸感(可选增强)
如果阅读背景是图片或复杂渐变,可在渐隐区域叠加轻微模糊,强化“退后感”。
- 给同一容器添加 backdrop-filter: blur(2px),但仅对蒙版中的透明区域生效
- 注意:需确保容器有 background-clip: padding-box 或设为半透背景,否则模糊无效
- 慎用过强模糊(>4px),易导致文字边缘发虚、降低可读性
适配移动端滚动时的动态渐隐
固定上下渐隐在长文阅读中略显静态。进阶做法是让顶部/底部渐隐区域随滚动位置动态收缩或偏移。
- 监听
scrollY,计算当前可视区域顶部/底部距内容首尾的距离 - 用 JS 动态更新 CSS 自定义属性,例如:
--top-mask-height: calc(20px + var(--scroll-ratio) * 10px) - 在 mask-image 中引用该变量:
linear-gradient(to bottom, black var(--top-mask-height), transparent) - 这样用户刚进入页面时顶部遮罩稍宽,向下滚动后渐隐区收窄,视觉更自然
兼容性与降级处理
mask-image 在 Safari、Chrome、Edge 现代版本中已稳定支持;Firefox 自 2023 年起也全面启用。
- 如需兼容旧版 Firefox 或 iOS 14.5 以下,可添加伪元素 fallback:
- 用
::before和::after分别覆盖顶部/底部,设置background: linear-gradient(to bottom, rgba(255,255,255,1), rgba(255,255,255,0)) - 虽不如 mask 平滑,但结构清晰、性能好,作为优雅降级足够可用
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











