Layui弹出层layer如何实现窗口背景的模糊(Blur)滤镜效果

酷晨同学_3084

酷晨同学_3084

2026-03-31

923人浏览

原创

应给页面根容器(如#app)动态添加filter类实现模糊,而非作用于body;需用计数器管理多层弹窗的blur状态,并为ie/旧edge提供opacity遮罩降级方案。

layui弹出层layer如何实现窗口背景的模糊(blur)滤镜效果

layer.open 里直接加 CSS filter 会失效?

因为 Layui 的弹出层(layer.open)默认把遮罩层(.layui-layer-shade)和内容层(.layui-layer)都放在 body 最末尾,且遮罩层是独立 DOM 节点,不包裹页面主体。你给 body 或 html 加 filter: blur(4px),只会模糊它自己,不会影响背后的真实页面内容——因为“背后”在视觉层级上其实被遮罩盖住了,或者根本没被渲染进同一 stacking context。

真正生效的模糊必须作用于「页面主体容器」

你需要一个稳定、包裹全部业务内容的外层容器(比如 #app 或 .wrapper),并在 layer 弹出时给它加 filter,关闭时移除。否则滤镜不是没效果,就是连弹窗自己也被模糊了。

实操建议:

  • 确认你的页面有一个唯一、不随 layer 变动的根容器,例如:<div id="app">...</div>
  • 弹出前给它加类:document.getElementById('app').classList.add('blur-bg')
  • 定义样式:
    .blur-bg { filter: blur(6px); transition: filter 0.2s ease; }
  • layer 关闭回调里务必清除:layer.close(index); document.getElementById('app').classList.remove('blur-bg');
  • 别用 body 做载体——某些 UI 框架或 Layui 自身的浮动元素(如 .layui-fixbar)可能脱离 body 流,导致模糊漏掉

IE 和旧版 Edge 不支持 filter?得降级处理

filter: blur() 在 IE 全系、Edge ≤17 中完全无效,会直接忽略。如果你的用户还有这类环境,强行加 filter 不仅没效果,还可能因样式 cascade 导致布局错位。

稳妥做法是检测支持性再启用:

  • 用 CSS.supports('filter', 'blur(1px)') 判断(现代浏览器)
  • 或简单 UA 检测:navigator.userAgent.indexOf('MSIE') > -1 || navigator.userAgent.indexOf('Trident') > -1
  • 不支持时,改用半透明深色遮罩 + 提高 .layui-layer-shade 的 opacity(比如 0.85),视觉上也能强化「聚焦弹窗」感
  • 注意:不要同时开 filter 和高 opacity 遮罩,iOS Safari 下可能触发渲染异常(白屏或闪烁)

layer 有多个实例时,blur 状态容易混乱

比如用户快速连续打开两个 layer,第一个还没关,第二个又给 #app 加了 blur-bg;关闭其中一个时如果没计数,就会提前移除 class,导致背景突然清晰——而另一个弹窗还在。

解决方法很简单:

  • 用一个全局计数器:window.layerBlurCount = 0
  • 每次 layer.open 前执行:window.layerBlurCount++,然后 if (window.layerBlurCount === 1) addClass
  • 在所有 layer.close、layer.closeAll、甚至 layer.msg 等自动关闭场景的回调里做 window.layerBlurCount--,并检查是否归零再 removeClass
  • 别依赖 layer.ready——它只管初始化,不管关闭逻辑
Layui 本身不提供 blur API,这事得自己托底控制容器状态,最易忽略的是多层弹窗时的计数同步和旧浏览器 fallback 方案。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2443

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5243

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6290

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5878

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

css3教程
css3教程

php中文网为大家提供css3教程合集,CSS3的语法是建立在CSS原先版本基础上的,它允许使用者在标签中指定特定的HTML元素而不必使用多余的class、ID或JavaScript。php中文网还为大家带来css3的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

1880

10

有哪些css3渐变属性
有哪些css3渐变属性

css3中渐变属性有linear-gradient、radial-gradient、conic-gradient、repeating-linear-gradient、repeating-radial-gradient等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.01

2706

5

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

80

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习