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 相关文章推荐
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
jquery高效反选具体实现
May 05 Javascript
js替换字符串的所有示例代码
Jul 23 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
如何利用JavaScript编写一个格斗小游戏
Jan 06 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
PHP生成带有雪花背景的验证码
2008/09/28 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
php中的依赖注入实例详解
2019/08/14 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
js不是基础的基础
2006/12/24 Javascript
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
高一英语教学反思
2014/01/22 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
体操比赛口号
2014/06/10 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
小学中队委竞选稿
2015/11/20 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书