关于vue.js弹窗组件的知识点总结
首先在开发时需要考虑以下三点:1、进入和弹出的动画效果。 2、z-index 的控制 3、overlay 遮盖层 关于动画vue 对于动画的处理相对简单,给组件加入css transition 动画即可 外部可以由使用者自行控制,使用 z-index 的控制关于 2、后弹出的弹出框的 要满足以上两点, 我们需要以下代码实现 const getZIndex = function () {
return zIndex++ // 每次获取之后 zindex 自动增加 } 然后绑定把 overlay 遮盖层的控制遮盖层是弹窗组件中最难处理的部分,一个完美的遮盖层的控制需要完成以下几点: 1、遮盖层和弹出层之间的动画需要并行 2、遮盖层的 3、遮盖层的弹出时需要组件页面滚动 4、点击遮盖层需要给予弹出层反馈 5、保证整个页面最多只能有一个遮盖层(多个叠在一起会使遮盖层颜色加深) 为了处理这些问题,也保证所有的弹出框组件不用每一个都解决,所以决定利用 vue 的 vue-popup-mixin明确了上述所有的问题,开始开发 mixin,首先需要一个 然后 需要一个 js 来管理 const getDOM = function (dom) {
if (dom.nodeType === 3) { dom = dom.nextElementSibling || dom.nextSibling getDOM(dom) } return dom } // z-index 控制 const getZIndex = function () { // 当没有遮盖层时,显示遮盖层 // 给弹出层加上z-index Vue.nextTick(() => { // 当页面上没有弹出层了就关闭遮盖层 // 禁止页面滚动 window.addEventListener('keydown',function (event) { export default PopupManager 最后再封装成一个 mixin export default {
props: { show: { type: Boolean,default: false },// 是否显示遮盖层 overlay: { type: Boolean,default: true },overlayOpacity: { type: Number,overlayColor: { type: String,// 组件被挂载时会判断show的值开控制打开 attached () { if (this.show && this.overlay) { PopupManager.open(this) } },// 组件被移除时关闭 detached () { PopupManager.close(this) },watch: { show (val) { // 修改 show 值是调用对于的打开关闭方法 if (val && this.overlay) { PopupManager.open(this) } else { PopupManager.close(this) } } },beforeDestroy () { PopupManager.close(this) } } 使用以上所有的代码就完成了所有弹出层的共有逻辑, 使用时只需要当做一个mixin来加载即可 总结以上就是关于vue.js弹窗组件的一些知识点,希望对大家的学习或者工作带来一定的帮助,如果大家有疑问可以留言交流,谢谢大家对编程之家的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |