vue弹窗组件使用方法


Posted in Javascript onApril 28, 2018

本文实例为大家分享了vue弹窗组件的具体代码,供大家参考,具体内容如下

弹窗是一个项目必备的复用利器,所以封装起来,保证项目ui一致,是很有必要的。学了一段时间vue,想想还是用vue写一下吧。用的很小白,但是会写出来了,说明我也有进步一丢丢了。继续加油….

代码贴图如下,样式比较丑,不要介意…

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>ys-vue-modal-component</title>
  <style>
    p,h4{
      margin:0;
    }
    .modal{
      width: 480px;
      background-color: #fff;
      border: 1px solid rgba(0, 0, 0, .3);
      border-radius: 6px;
      box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
      margin: 50px;
    }
    .modal-header {
      color: #fff;
      background: cadetblue;
      border-radius: 6px 6px 0 0;
      padding: 15px;
      border-bottom: 1px solid #5e9fa1;
    }
    .modal-content div {
      padding: 15px 10px;
    }
    .modal-footer {
      padding: 15px;
      text-align: right;
      border-top: 1px solid #e5e5e5;
    }
    .btn {
      border: 1px solid #d1d1d1;
      border-radius: 3px;
      background-color: #f7f7f7;
      background: -webkit-gradient(linear, 0 0, 0 100%, from(#f7f7f7),
     to(#f2f2f2));
      background: -moz-gradient(linear, 0 0, 0 100%, from(#f7f7f7),
     to(#f2f2f2));
      background: -o-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
      background: -ms-gradient(linear, 0 0, 0 100%, from(#f7f7f7), to(#f2f2f2));
      height: 28px;
      padding: 0 20px;
      cursor: pointer;
      line-height: 28px;
      display: inline-block;
      color: #666666;
      margin-right: 5px;
      outline: none;
    }
    .blue {
       border: 1px solid #5e9fa1;
      background-color: #5e9fa1;
      background: -webkit-gradient(linear, 0 0, 0 100%, from(#74c4c6),
     to(#5e9fa1));
      background: -moz-gradient(linear, 0 0, 0 100%, from(#74c4c6),
     to(#5e9fa1));
      background: -o-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
      background: -ms-gradient(linear, 0 0, 0 100%, from(#74c4c6), to(#5e9fa1));
      color: #FFFFFF;
    }    
  </style>
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app"> 
    <input type="button" class="btn blue" value="点击我,呼唤弹窗,再来一遍" v-if="isHide" @click="isHide=!isHide">
    <ys-modal-component 
       v-if="!isHide"
       modal-title="温馨提示" 
       ok-btn="确认购买" 
       cancel-btn="去意已决"
       @on-ok="ok"
       @on-cancel="cancel"
     >
      <div slot="modal-content">
        尊敬的用户,您购买的商品将于支付成功后3-7个工作日内发货,敬请周知。祝您购物愉快!
      </div>
    </ys-modal-component>
  </div>
  <script>
    /*
      props:
        modalTitle: 弹窗标题
        okBtn: 确认按钮
        cancelBtn: 取消按钮
        注意事项:传参时候使用烤串的书写方式xx-xxx
      slot:
        modal-content: 内容区域
        modal-footer: 页脚按钮区域
      methods: 
        okHandle: 触发确认on-ok自定义事件
        cancelHandle: 触发取消on-cancel自定义事件
     */
    Vue.component('ys-modal-component', {
      props: {
        modalTitle: {
          type: String,
          default: '标题区域'
        },
        okBtn: {
          type: String,
          default: '确认'
        },
        cancelBtn: {
          type: String,
          default: '取消'
        }
      },
      template: `
        <div class="modal">
          <div class="modal-header">
            <h4>{{ modalTitle }}</h4>
          </div>
          <div class="modal-content">
            <div>
              <slot name="modal-content">内容区域</slot>
            </div>
          </div>
          <div class="modal-footer">
              <input class="btn blue" type="button" v-model="okBtn" @click="okHandle" />
              <input class="btn" type="button" v-model="cancelBtn" @click="cancelHandle" />
          </div>
        </div>
      `,
      methods: {
        okHandle () {
          console.log("点击确定");
          this.$emit("on-ok"); 
        },
        cancelHandle () {
          console.log("点击取消");
          this.$emit("on-cancel");
        }
      }
    })


    new Vue({
      el: "#app",
      data: {
        isHide: false
      },
      methods: {
        ok () {
          alert("欢迎您购买本产品");
        },
        cancel () {
          this.isHide = !this.isHide;
        }
      }
    })
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
TypeOf这些知识点你了解吗
Feb 21 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
Mar 04 Javascript
mongoose中利用populate处理嵌套的方法
May 26 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
Feb 24 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
学习Vue组件实例
Apr 28 #Javascript
vue弹窗消息组件的使用方法
Sep 24 #Javascript
layui实现动态和静态分页
Apr 28 #Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 #Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 #Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 #Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 #Javascript
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
第十三节 对象串行化 [13]
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
理解Javascript闭包
2013/11/01 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
浅谈React碰到v-if
2018/11/04 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
医学生自荐信
2013/12/03 职场文书
职工代表大会主持词
2014/04/01 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python