知乐空间

vue电脑版怎么安装

今天给大家分享的是Vue3系列之自定义桌面端对话框组件v3layer

vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

V3Layer 基于vue3.0构建的多功能PC网页端弹窗组件。拥有超过10+种弹窗类型、30+种参数配置,支持拖拽(自定义拖拽区域)、缩放、最大化、全屏及自定义置顶层叠等功能。

vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

快速引入

在main.js中引入v3layer组件。

import { createApp } from 'vue'
import App from './App.vue'

// 引入Element-Plus组件库
import ElementPlus from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'

// 引入弹窗组件v3layer
import V3Layer from './components/v3layer'

createApp(App).use(ElementPlus).use(V3Layer).mount('#app')
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

v3layer支持组件式+函数式两种调用方式。

  • 组件式

    
  • 函数式
let $el = v3layer({
    title: '标题内容',
    content: '这里是内容信息!', 
    shadeClose: false,
    zIndex: 2021,
    lockScroll: false,
    xclose: true,
    resize: true,
    dragOut: true,
    btns: [
        {text: '取消', click: () => { $el.close() }},
        {text: '确认', click: () => handleSure},
    ]
});

当弹窗类型为 message | notify | popover,调用方法如下:

v3layer.message({...})
v3layer.notify({...})
v3layer.popover({...})
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

vue3.0中提供了
app.config.globalProperties
app.provide 两种方式挂载全局函数。

  • 如果是 app.config.globalProperties 方式创建:
// vue2中调用
methods: {
    showDialog() {
        this.$v3layer({...})
    }
}

// vue3中调用
setup() {
    // 获取上下文
    const { ctx } = getCurrentInstance()
    ctx.$v3layer({...})
}
  • 如果是 app.provide 方式创建:
// vue2中调用
methods: {
    showDialog() {
        this.v3layer({...})
    }
}

// vue3中调用
setup() {
    const v3layer = inject('v3layer')
    
    const showDialog = () => {
        v3layer({...})
    }

    return {
        v3layer,
        showDialog
    }
}
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

参数配置

v3layer支持如下30+参数灵活配置,实现各种弹窗场景。

|props参数|
v-model         是否显示弹框
id              弹窗唯一标识
title           标题
content         内容(支持String、带标签内容、自定义插槽内容)***如果content内容比较复杂,推荐使用标签式写法
type            弹框类型(toast|footer|actionsheet|actionsheetPicker|android|ios|contextmenu|drawer|iframe)
layerStyle      自定义弹窗样式
icon            toast图标(loading | success | fail)
shade           是否显示遮罩层
shadeClose      是否点击遮罩时关闭弹窗
lockScroll      是否弹窗出现时将body滚动锁定
opacity         遮罩层透明度
xclose          是否显示关闭图标
xposition       关闭图标位置(left | right | top | bottom)
xcolor          关闭图标颜色
anim            弹窗动画(scaleIn | fadeIn | footer | fadeInUp | fadeInDown | fadeInLeft | fadeInRight)
position        弹出位置(auto | ['100px','50px'] | t | r | b | l | lt | rt | lb | rb)
drawer          抽屉弹窗(top | right | bottom | left)
follow          跟随元素定位弹窗(支持元素.kk #kk 或 [e.clientX, e.clientY])
time            弹窗自动关闭秒数(1、2、3)
zIndex          弹窗层叠(默认8080)
teleport        指定挂载节点(默认是挂载组件标签位置,可通过teleport自定义挂载位置) teleport="body | #xxx | .xxx"
topmost         置顶当前窗口(默认false)
area            弹窗宽高(默认auto)设置宽度area: '300px' 设置高度area:['', '200px'] 设置宽高area:['350px', '150px']
maxWidth        弹窗最大宽度(只有当area:'auto'时,maxWidth的设定才有效)
maximize        是否显示最大化按钮(默认false)
fullscreen      全屏弹窗(默认false)
fixed           弹窗是否固定
drag            拖拽元素(可定义选择器drag:'.xxx' | 禁止拖拽drag:false)
dragOut         是否允许拖拽到窗口外(默认false)
lockAxis        限制拖拽方向可选: v 垂直、h 水平,默认不限制
resize          是否允许拉伸尺寸(默认false)
btns            弹窗按钮(参数:text|style|disabled|click)
++++++++++++++++++++++++++++++++++++++++++++++
|emit事件触发|
success         层弹出后回调(@success="xxx")
end             层销毁后回调(@end="xxx")
++++++++++++++++++++++++++++++++++++++++++++++
|event事件|
onSuccess       层打开回调事件
onEnd           层关闭回调事件

v3layer弹窗模板

v3layer支持自定义拖拽区域 (drag:’#aaa’),拖动到窗口外 (dragOut:true)。支持iframe弹窗类型 (type:’iframe’)。

配置 topmost:true 当前窗口会保持置顶。

vue3.0系列:Vue3自定义PC端弹窗组件V3Layer
vue3.0系列:Vue3自定义PC端弹窗组件V3Layer

ok,基于vue3.0开发pc端对话框组件就分享到这里。希望对大家有所帮助哈!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。

留言与评论(共有 0 条评论)
验证码: