zoukankan      html  css  js  c++  java
  • vue 弹框组件

    组件效果:

      

      HTML代码:

    <div :class="isHD">
    <div class="mask"></div>
    <div class="dialog-box">
    <div class="dialog-close-btn" @click="IKonw()"></div>
    <div :class="dialogIcon"></div>
    <p class="dialog-msg">{{msg}}</p>
    <div class="i-know" :class="notifyHidden" @click="confirm()">
    <a type="button">{{confirmName}}</a>
    </div>
    <div class="dialog-btn-box" :class="confirmHidden">
    <a type="button" class="dialog-cancel-btn" @click="IKonw()">{{cancelName}}</a>
    <a type="button" class="dialog-confirm-btn" @click="confirm()">{{confirmName}}</a>
    </div>
    </div>
    </div>


    CSS代码:
    .mask {
    position:fixed;
    100%;
    height:100%;
    font-weight:bold;">#000;
    opacity:0.3;
    z-index:10000;
    left: 0;
    top: 0;
    }
    .dialog-box {
    280px;
    height:200px;
    position:fixed;
    left:50%;
    top:50%;
    margin-left: -140px;
    margin-top:-100px;
    font-weight:bold;">#fff;
    z-index:10001;
    border-radius:4px;
    font-family: PingFangSC-Regular;
    font-size: 14px;
    }
    .dialog-msg {
    text-align:center;
    color: #4A6075;
    line-height: 26px;
    250px;
    margin: 0 auto;
    padding-left: 14px;
    height: 52px;
    display: inline-block;
    }
    .i-know {
    position: absolute;
    margin-top: 18px;
    margin-left: 70px;
    text-align:center;
    }
    .i-know a {
    display:inline-block;
    height:30px;
    140px;
    color:#fff;
    line-height:30px;
    font-weight:bold;">#3ABBCD;
    border-radius:100px;
    text-decoration: none;
    cursor: pointer;
    }
    .dialog-hidden ,.notify-hidden,.confirm-hidden{
    display:none;
    }
    .dialog-close-btn {
    background:url("/images/closebtn.svg") no-repeat center;
    10px;
    height:10px;
    overflow:hidden;
    position:absolute;
    right:10px;
    top:10px;
    cursor:pointer;
    }
    .dialog-confirm-icon {
    60px;
    height: 60px;
    background: url("/images/successBig.svg") no-repeat center;
    margin:-30px auto 45px auto;
    }
    .dialog-notify-icon {
    60px;
    height: 60px;
    background: url("/images/notifyBig.svg") no-repeat center;
    margin:-30px auto 45px auto;
    }
    .dialog-warning-icon {
    60px;
    height: 60px;
    background: url("/images/warningBig.svg") no-repeat center;
    margin:-30px auto 45px auto;
    }
    .dialog-btn-box {
    position: absolute;
    margin-top: 18px;
    margin-left: 28px;
    overflow:hidden;
    text-align:center;
    }
    .dialog-cancel-btn {
    display:inline-block;
    height:30px;
    100px;
    color:#888!important;
    line-height:30px;
    font-weight:bold;">#DEE4EA;
    border-radius:100px;
    vertical-align:middle;
    cursor: pointer;
    }
    .dialog-confirm-btn {
    display:inline-block;
    height:30px;
    100px;
    color:#fff!important;
    line-height:30px;
    font-weight:bold;">#3ABBCD;
    border-radius:100px;
    vertical-align:middle;
    margin-left:20px;
    cursor: pointer;
    }

    .hidden-btn{
    opacity: 0;
    position: absolute;
    }

    JS代码:
    use([], function() {
    Vue.component('dialogWidget', {
    pageName: "common",
    template: "public/widget/dialog/dialog.html",
    props:["isHidden","msg","confirmName","cancelName","handle","dialogIcon","confirmHidden","notifyHidden"],
    data:function() {
    return {
    isHD:'dialog-hidden'
    }
    },
    created: function() {},
    mounted: function() {
    this.isHD = this.isHidden;
    },
    methods: {
    IKonw:function(){
    this.isHD = "dialog-hidden";
    },
    confirm:function(){
    this.IKonw();
    if(this.handle){
    this.handle();
    }
    }
    }
    });
    });

    var dialog = {
    viewDialog: null,
    init: function(config) {
    var type = config.type || "notify";
    var msg = config.msg || "参数配置有误";
    var confirmName = config.confirmName || '';
    var cancelName = config.cancelName || '';
    var handle = config.handle || '';

    var isHidden='',dialogIcon,confirmHidden,notifyHidden;

    if(type == "confirm"){
    dialogIcon = "dialog-confirm-icon";
    confirmHidden = "";
    notifyHidden = "notify-hidden";
    }
    if(type == "notify"){
    dialogIcon = "dialog-notify-icon";
    confirmHidden = "confirm-hidden";
    notifyHidden = "";
    }
    if(type == "warning"){
    dialogIcon = "dialog-warning-icon";
    confirmHidden = "confirm-hidden";
    notifyHidden = "";
    }

    this.viewDialog = Vue.extend({
    template: '<dialogWidget :isHidden = "isHidden" :msg="msg" :confirmName="confirmName" :cancelName="cancelName" :handle="handle" :dialogIcon="dialogIcon" :confirmHidden="confirmHidden" :notifyHidden="notifyHidden"></dialogWidget>' ,
    data: function() {
    return {
    isHidden : isHidden,
    msg : msg,
    confirmName : confirmName,
    cancelName : cancelName,
    handle : handle,
    dialogIcon : dialogIcon,
    confirmHidden : confirmHidden,
    notifyHidden : notifyHidden
    }
    }
    });

    if($("#viewPrompter")){
    $("#viewPrompter").remove();
    }
    var component = new this.viewDialog().$mount();//挂载到内存节点上

    var viewerEle = $("<div id='viewPrompter'></div>");
    $("#content-box").append(viewerEle);
    viewerEle.append($(component.$el));
    }
    };

    组件引用:

    组件调用:

    showPrompt: function(){
    dialog.init({
    type:"warning",
    msg:"这是一个弹框?",
    confirmName:"我知道啊",
    handle:function(){
    console.log(111111111111)
    }
    });
    },
    showNotify: function(){
    dialog.init({
    type:"notify",
    msg:"这是一个notify弹框,这是一个notify弹框.这是一个notify弹框?",
    confirmName:"立即前往",
    handle:function(){
    console.log("去哪啊。。。。")
    }
    });
    },
    showConfirm: function(){
    dialog.init({
    type:"confirm",
    msg:"这是一个confirm弹框,这是一个confirm弹框.这是一个confirm弹框?",
    cancelName:"取消",
    confirmName:"确定",
    handle:function(){
    console.log("保存成功")
    }
    });
    }
    
    
    
  • 相关阅读:
    mui-popover显示、隐藏弹出菜单的方法
    mui使用总结
    js 原生 document.querySelectorAll document.getElementsByTagName document.querySelector document.getElementById的区别
    mui.min.js:7 Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load
    三个div并排
    菜单栏伸缩(附jquery-1.12.1.js)
    验证码生成(点击就更换)
    IDEA算法导包后 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey;报错
    IDEA加密算法(含所需jar包(commons-codec-1.11.jar ,bcprov-jdk15on-160.jar))
    1,eclipse导入项目jdk版本不一样解决方案 2,java报javax.servlet.jsp cannot be resolved to a type
  • 原文地址:https://www.cnblogs.com/lovemiao/p/8656057.html
Copyright © 2011-2022 走看看