vue 弹框组件

组件效果:

HTML代码:

<div :class="isHidden">    <div :class="promptStyle">        <div :class="iconStyle"></div>        <div class= "msgStyle">{{msg}}</div>        <div class="prompt-close-btn" @click="close()"></div>    </div></div>

CSS代码:
.prompt-box {    width:600px;    min-height:36px;    line-height:36px;    position:fixed;    left:50%;    top:20px;    margin-left:-320px;    z-index:99999;    border-radius:2px;    padding:0 25px;    color:#666;}.prompt-box.warning {    font-weight:bold;">#FEF6D7;;    border: 1px solid #FCD037;}.prompt-box.success {    font-weight:bold;">#ECF3F4;    border: 1px solid #3ABBCD;}.prompt-box.notify {    font-weight:bold;">#FEF6D7;    border: 1px solid #FCD037;}.prompt-close-btn {    background:url("/images/closebtn.svg") no-repeat center;    width:14px;    height:14px;    overflow:hidden;    position:absolute;    right:20px;    top:12px;    cursor:pointer;}.msgStyle {    display:inline-block;    vertical-align:middle;    max-width:500px;    text-align:left;}.prompt-warning-icon {    display: inline-block;    background: url("/images/warning.svg") no-repeat center;    width: 26px;    height: 26px;    vertical-align: middle;}.prompt-success-icon {    display: inline-block;    background: url("/images/success.svg") no-repeat center;    width: 26px;    height: 26px;    vertical-align: middle;}.prompt-notify-icon {    display: inline-block;    background: url("/images/notify.svg") no-repeat center;    width: 26px;    height: 25px;    vertical-align: middle;}.prompt-hidden {    display:none;}

JS代码:
use([], function() {    Vue.component(‘promptWidget‘, {        pageName: "common",        template: "public/widget/prompt/prompt.html",        props:["isHidden","promptStyle","iconStyle","type","msg"],        data:function() {            return {}        },        created: function() {},        mounted: function() {

},        methods: {            close:function(){                this.isHidden="prompt-hidden"            }        }    });});

var prompt = {    viewPrompt: null,    init: function(config) {

var type = config.type;        var msg = config.msg;

var isHidden=‘‘,promptStyle,iconStyle;

if(type == "warning"){            iconStyle = "prompt-warning-icon";            promptStyle = "prompt-box warning";        }        if(type == "success"){            iconStyle = "prompt-success-icon";            promptStyle = "prompt-box success";        }        if(type == "notify"){            iconStyle = "prompt-notify-icon";            promptStyle = "prompt-box notify";        }

this.viewPrompt = Vue.extend({            template: ‘<promptWidget :isHidden = "isHidden" :type="type" :iconStyle="iconStyle" :promptStyle="promptStyle" :msg="msg"></promptWidget>‘ ,            data: function() {                return {                    isHidden : isHidden,                    type : type,                    iconStyle : iconStyle,                    promptStyle : promptStyle,                    msg : msg                }            }        });

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

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

组件的引入:

组件调用:

prompt.init({type:"success",msg:"我对了"});

原文地址:https://www.cnblogs.com/lovemiao/p/8649679.html

时间: 2024-08-02 08:00:57

vue 弹框组件的相关文章

VUE2.0增删改查附编辑添加model(弹框)组件共用

Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue-admin/#/login 自己下载下来后仔细研究了起来,发现编辑和增加写了两个弹框,我觉得这不符合vue的组件原则,于是自己把编辑和添加改成共用的 因为也是纯粹的写写前端页面,所以数据方面用的是mock.js,真实的模拟请求. 这个项目用到的 技术栈: vue + webpack + vuex +

弹框组件

因为项目中使用的较多,因此封装了一个组件,便于使用. /* *@file 弹框组件 *@description 用于所有提示弹框 *@time 2016/11/29 */ function PopModel(options) { var that = this; this.defaults = { width: '100px', // 默认框 height: '120px', // 默认高 isMask: true, // 是否遮罩 dir: 'mid', // mid中间,left左下,rig

移动端(H5)弹框组件--简单--实用--不依赖jQuery

俗话说的好,框架是服务与大家的,包含的功能比较多,代码多.在现在追求速度的年代.应该根据自己的需求去封装自己所需要的组件. 下边就给大家介绍一下自己封装的一个小弹框组件,不依赖与jQuery,代码少,适用于一般移动端小项目. 这个插件名称:MobileUi 包含功能:弹框,正在加载,tips1.5秒消失,清除正在加载. 如图:    接下来我来告诉大家怎么用吧!! 第一步:配置<meta name="viewport" content="width=device-wid

vue移动端弹框组件

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg

vue移动端弹框组件的实例

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 ? 1 2 3 4 // 当前最新版本 1.2.0 npm install vue-layer-mobile // 如新版遇到问题可回退旧版本 npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf

vue移动端弹框组件,vue-layer-mobile

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg

vue弹框,删除元素

1.效果 2.index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <title>Ti

微信小程序之----弹框组件modal

modal modal类似于javascript中的confirm弹框,默认情况下是一个带有确认取消的弹框,不过点击取消后弹框不会自动隐藏,需要通过触发事件调用函数来控制hidden属性. 官方文档 .wxml <modal hidden="{{hidden}}" title="这里是title" confirm-text="自定义确定按钮" cancel-text="自定义取消按钮" bindcancel="

手机页面弹框组件

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1.0" /> <title>Do