html5布局代码遮罩层覆盖布局_html5布局代码遮罩层法【技巧】
技术百科
星夢妙者
发布时间:2026-01-27
浏览: 次 遮罩层用 position: fixed 还是 absolute 取决于是否随滚动消失:全屏遮罩用 fixed,局部容器内遮罩用 absolute 且父级需 relative;须设 z-index、rgba 背景、四边定位;pointer-events 控制事件穿透,按钮需单独设 auto。
遮罩层用 position: fixed 还是 position: absolute?
取决于遮罩是否要随滚动消失。如果希望遮罩始终盖住整个视口(比如弹窗、加载中提示),必须用 position: fixed;若只盖住某个相对定位的容器内部(如卡片内的操作遮罩),才用 position: absolute,且父容器需设 position: relative。
常见错误:直接给遮罩加 position: absolute 但没管父级定位,结果遮罩飘到页面左上角或完全错位。
-
z-index必须显式设置,且值要高于被遮盖内容(通常设9999或1000起) - 遮罩背景推荐用半透黑:
background: rgba(0, 0, 0, 0.6),别用opacity,否则会把子元素也变透明 - 记得加
top: 0; right: 0; bottom: 0; left: 0;填满视口(fixed下)
遮罩层里放按钮/表单,点击失效怎么办?
本质是遮罩层“吃掉”了所有鼠标事件。解决方法不是删遮罩,而是控制 pointer-events:
- 默认遮罩设
pointer-events: auto(或不设,默认就是) - 如果遮罩只是视觉覆盖、不拦截交互,就设
pointer-events: none - 但如果遮罩内有关闭按钮,就得让按钮区域重新可点:给按钮单独设
pointer-events: auto
示例结构:
CS

.overlay { pointer-events: auto; },.close-btn { pointer-events: auto; } —— 按钮能点,其余区域仍拦截点击。
backdrop-filter 做毛玻璃效果,为什么在 Safari 上不生效?
因为 Safari 对 backdrop-filter 有严格限制:父元素不能有 overflow: hidden 或 transform(哪怕只是 transform: translateZ(0)),否则直接禁用该效果。
- 检查遮罩父容器是否意外加了
overflow: hidden(常见于轮播、卡片裁剪) - 避免对遮罩本身或其任意祖先加
transform、will-change等触发合成层的属性 - 兼容写法:先加
backdrop-filter: blur(6px),再加-webkit-backdrop-filter: blur(6px) - 真不行就降级为纯色半透,别硬撑毛玻璃
移动端点击穿透(click-through)怎么防?
遮罩层关闭后,底层元素被误触,多见于 iOS Safari。根本原因是遮罩移除瞬间,系统把“抬起手指”的动作映射到了下方元素上。
- 遮罩关闭时,给
加pointer-events: none,延时300ms后再移除 - 或者更稳妥:遮罩 DOM 移除前,先用
setTimeout(() => { /* 移除遮罩 */ }, 0)把操作推到下一轮事件循环 - 别依赖
touchstart+preventDefault(),iOS 15+ 已限制其对非可滚动区域的拦截能力
这个延迟和事件循环细节,恰恰是多数人调试时反复踩坑却查不到原因的地方。
# 移除
# 解决方法
# 表单
# safari
# 全屏
# 就得
# 内有
# 能有
# 鼠标
# auto
# 循环
# html
# pointer
# 事件
# ios
# 可点
# dom
# transform
# background
# Filter
# position
# 再加
# html5
# 鼠标事件
# overflow
# 相对定位
# webkit
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么更改电脑名称_Windows 11修
- 如何使用Golang recover捕获panic
- Win11怎么把图标拖到任务栏_Win11固定应用
- Win11 explorer.exe频繁崩溃_修复
- php485能和物联网模块通信吗_php485对接
- 如何在Golang中使用闭包_封装变量与函数作用域
- Windows10电脑怎么设置虚拟内存_Win10
- Bpmn 2.0的XML文件怎么画流程图
- Go 中 defer 语句在 goroutine
- Win10如何设置双wan路由器 Win10双wa
- Win11怎么清理C盘系统错误报告_Win11清理
- 如何使用Golang开发简单的聊天室消息存储_Go
- PythonFastAPI项目实战教程_API接口
- Windows10如何更改开机密码_Win10登录
- c# Task.Yield 的作用是什么 它和Ta
- Win11怎么设置默认图片查看器_Windows1
- Win11怎么设置多显示器任务栏 Win11扩展任
- 如何在 ACF 中正确更新嵌套多层 Group 字
- php本地部署后session无法保存_sessi
- Win10怎样卸载iTunes_Win10卸载iT
- Windows家庭版如何开启组策略(gpedit.
- Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
- Win11怎么忘记WiFi网络_Win11删除已保
- 如何高效获取循环末次生成的 NumPy 数组最后一
- Win11怎么清理C盘虚拟内存_Win11清理虚拟
- 如何使用Golang实现Web表单数据绑定_自动映
- Python字符串操作教程_切片拼接与格式化详解
- Win11文件扩展名怎么显示_Win11查看文件后
- 如何使用Golang log设置日志输出格式_Go
- 如何在Golang中实现自定义Benchmark_
- Mac如何备份到iCloud_Mac桌面与文稿文件
- 如何使用Golang管理模块版本_Golanggo
- Linux如何申请SSL免费证书_Linux下Ce
- 短链接怎么自定义还原php_修改解码规则适配需求【
- 手机php怎么转mp4_手机端php文件转mp4a
- 小程序里php怎么变mp4_小程序调用php生成m
- php能控制zigbee模块吗_php通过串口与c
- 如何在 ACF 中正确更新嵌套多层的 Group
- 如何开启Windows的远程服务器管理工具(RSA
- Windows 11如何开启文件夹加密(EFS)_
- Windows10如何重置此电脑_Windows1
- c++的位运算怎么用 与、或、异或、移位操作详解【
- mac本地php环境如何开启curl_curl扩展
- Windows驱动无法加载错误解决方法_驱动签名验
- Win11怎么关闭触摸屏_禁用Win11笔记本触摸
- 如何在Golang中处理URL参数_Golang
- Windows音频驱动无声音原因解析_声卡驱动错误
- Win11怎么关闭通知消息_屏蔽Windows 1
- Win11怎么更改电脑密码_Windows 11修
- Python技术债务管理_长期维护解析【教程】

QQ客服