# vl-layer
**Repository Path**: gjTool/vl-layer
## Basic Information
- **Project Name**: vl-layer
- **Description**: 一款好用的vue弹窗组件,layui-layer弹窗风格
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 3
- **Created**: 2021-02-03
- **Last Updated**: 2023-08-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Vue
## README
[](https://www.npmjs.com/package/vl-layer) [](https://www.npmjs.com/package/vl-layer) [](https://github.com/gjTool/vl-layer/blob/master/LICENSE) [](https://github.com/gjTool/vl-layer/issues) [](https://github.com/gjTool/vl-layer/stargazers) [](https://github.com/gjTool/vl-layer/network/members)
**vue-layer修复版vl-layer,一款好用的vue弹窗组件,layui-layer弹窗风格**
- 起初使用vue-layer,但是奈何bug太多,作者又没有时间修复,所以只能自己动手修改源码,添加自己想要的功能,修改了图标,索性发布到npm上,这样也能帮到其他想用vue-layer的同学。
- [vl-layer github地址](https://github.com/gjTool/vl-layer)
- [原版vue-layer github地址](https://github.com/zuoyanart/vue-layer)
### **QQ交流群:196422291**
## 更新信息
- 2021.06.18 更新: 新增parentDom属性,弹窗的父元素,弹窗创建后会append到父元素
## 快速使用
```shell
npm install vl-layer
```
- main.js里
```javascript
import Vue from 'vue';
import layer from 'vl-layer'
import 'vl-layer/vl-layer.css';
Vue.prototype.$layer = layer(Vue);
```
- vue文件里
```javascript
```
- HelloWorld.vue
```javascript
```
## Attribut
-(注意1:信息框,页面层,iframe层,加载层,tips层下各种具体配置参数会有差别,可以看后面各自的配置)
-(注意2:iframe层并不是真的用了html标签iframe,实质上还是用的div,只是iframe层可以引用自定义组件、页面)
```javascript
{
type: 0, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
title: '信息',
content: '', //文本,标签,iframe层可以传递vue组件对象
area: 'auto',//['400px','300px']
offset: 'auto',//[20,10] "rightTop" "rightBottom" "leftTop" "leftBottom" {left:0,top:0} {left:0,bottom:0} {right:0,bottom:0} {right:0,top:0}
icon: -1,
btn: '确定',//[‘确定’,‘取消’]
time: 0,
shade: true,//是否显示遮罩
yes: ()=>{},//确定回调
cancel: ()=>{},//取消,右上角x关闭按钮回调
tips: [0,{}],//支持上右下左四个方向,通过1-4进行方向设定,可以设定tips: [1, '#c00']
tipsMore: false,//是否允许多个tips
shadeClose: true,//点击遮罩是否关闭
maxmin: true,//开启最大化最小化
minBtnOnly:true, //默认false 在 maxmin: true前提下,开启minBtnOnly表示只显示最小化按钮
scrollbar: true, //是否允许浏览器出现滚动条:默认是允许
resize: false ,//是否允许拉伸,默认是不允许
parentDom: HTMLdiv,//html DOM元素,弹窗所在的父元素
resizeOptions:{
icon:true , //是否显示右下角图标 默认显示 false隐藏
dom:true, //是否开启右下角拉伸
right:false, //是否开启右边界拉伸
bottom:false //是否开启底部边界拉伸
},
//新增参数
canmove:false, //true可以拖动 false不能拖动
//弹窗成功 id弹窗的id
success:id=>{
console.log("success",id)
},
//弹窗关闭/取消
end:()=>{
console.log("end")
},
//还原状态回调 id弹窗的id state:1 是由最小化还原 2是由最大化还原
maxminiCallback:(id,state)=>{
console.log('maxminiCallback', id,state);
},
//最小化回调 id弹窗的id
miniCallback: id => {
console.log('miniCallback', id);
},
//最大化回调 id弹窗的id
maxCallback: id => {
console.log('maxCallback', id);
},
//弹窗关闭/取消之前,id弹窗的id close关闭弹窗, return false阻止关闭 return true不阻止
beforeClose:(id,close)=>{
console.log("beforeClose",id)
setTimeout(()=>{
close(id)
},2000)
return false
}
}
```
## Method

```javascript
this.$layer.alert(content, [options, yes]);
// options和yes可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes
// content 可以为html
//yes如果是个function,这会自动添加参数layerid,
(layerid)=>{
this.$layer.close(layerid);
}
```

```javascript
this.$layer.confirm(content, [options, yes, cancel]);
// options,yes和cancel可以省略, 如果您不愿意写options,则可以直接写确定按钮的函数,即yes,或者覆盖默认的cancel方法。PS:yes和cancel方法不能互换
//content 可以为html
//yes,cancel如果是个function,这会自动添加参数layerid,
(layerid)=>{
this.$layer.close(layerid);
}
```


```javascript
this.$layer.loading(option);
// options ={time:3},3秒自动关闭
//options = {content:'请等待'} //可传入文字
```

```javascript
this.$layer.msg(content, [options, end]);
// options和end可以省略, 如果您不愿意写options,则可以直接写时间到期的回调即可,即end方法
// 默认msg的关闭时间为1.5秒
// content 可以为html
```

```javascript
this.$layer.prompt(options, yes);
//特殊参数: value 要回显的值
//formType: 1text,2password,3textarea
```

```javascript
this.$layer.tips(content, follow, options);
//content 可以为html
//follow对css选择器,用来定位目标
```

```javascript
this.$layer.iframe({
content: {
content: componentName, //传递的组件对象
parent: this,//当前的vue对象
data:{}//props
},
area:['800px','600px'],
title: 'title',
cancel:()=>{//关闭事件
alert('关闭iframe');
}
});
// data参数可认为是componentName的props,同时 该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接用来关闭该层
// options参数直接写到json里即可,比如title
```
```javascript
this.$layer.close(layerid);
this.$layer.closeAll(type); // type:'loading' 'alert' 'confirm' 'msg' 'prompt' 'iframe'
//弹窗最大化
this.$layer.full(layerid);
//弹窗最小化
this.$layer.min(layerid);
//还原弹窗
this.$layer.restore(layerid);
//弹窗是否可以拖动 true可以 false不能
this.$layer.canmove(layerid,true)
```
### **QQ交流群:196422291**
## 打赏赞助作者,请他喝一杯咖啡:

