多层弹出共用同一背景,层级嵌套于内部组件,按钮功能支持回调操作。
1、 多层弹出共用单一背景层
2、 通过两个组件协同工作:背景层组件(background.vue)负责渲染遮罩背景,弹出层内容管理组件(master.vue)则用于统筹多个内容层级的显示与切换。弹出层内部通过Vue的component标签动态挂载不同内容模块,具备良好的扩展性与兼容性。所有按钮交互的回调逻辑均在master.vue中统一处理,便于状态管理和事件响应。该结构清晰分离了视觉层次与功能控制,提升了代码复用性与维护效率,适合构建复杂的弹窗体系。
3、 HTML代码
4、 内部组件集合包含多个基础元素,realIndex为计算属性,用于获取props中mIndex的值,体现各层zIndex的层级顺序。component负责加载具体组件内容,btns用以存储按钮组,目前暂不支持各组件单独设置按钮列表。style方法则动态生成CSS样式代码,实现内部组件在容器中的水平垂直居中效果,确保界面布局协调统一。
5、 JavaScript代码
6、 open方法可打开弹出层,并返回一个Promise对象。
7、 在页面中嵌入background.vue组件以实现背景展示功能。
8、 clickHandler方法是master.vue组件中按钮的事件处理函数,用于响应用户点击操作,并在执行时解析open方法中传入的Promise对象,完成异步任务的回调处理。
9、 CSS样式代码
10、 实用方法
11、 在顶层引入master.vue,并将其与app组件置于同一层级进行嵌入。
12、 务必设置ref值,这是实现弹出层的核心。
13、 在任一子组件中按此方式调用即可。
14、 通过\$root.\$refs获取弹出层管理组件实例
15、 调用其open方法,接收一个Promise类型的返回结果。
16、 用Promise就能解决。
17、 发布至npm平台
18、 若组件需供他人引用,建议采用CommonJS2规范,Webpack可按如下方式进行配置。
19、 注册npmjs账号
20、 通过npm login命令进行登录操作
21、 通过 npm publish 发布包,若需删除可使用 npm unpublish --force 命令强制移除。
22、 发布时需检查package.json中的version和name字段,若已存在或曾被卸载的包均无法发布。
23、 package.json 的 main 字段用于指定模块被引入时默认加载的入口文件。
