很棒的vue弹窗组件


Posted in Javascript onMay 24, 2017

弹窗是一个项目必备的复用利器,所以封装起来,保证项目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 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
简介AngularJS的视图功能应用
Jun 17 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
详解Vue使用命令行搭建单页面应用
May 24 #Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 #Javascript
微信小程序 支付功能(前端)的实现
May 24 #Javascript
微信小程序 选项卡的简单实例
May 24 #Javascript
JS回调函数基本定义与用法实例分析
May 24 #Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 #jQuery
详解前后端分离之VueJS前端
May 24 #Javascript
You might like
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
基于Jquery的温度计动画效果
2010/06/18 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JS验证不重复验证码
2017/02/10 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
十个Python程序员易犯的错误
2015/12/15 Python
python字符类型的一些方法小结
2016/05/16 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
一套带答案的C++笔试题
2014/01/10 面试题
资料员的岗位职责
2013/11/20 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
啦啦队口号大全
2014/06/16 职场文书
主题党日活动总结
2014/07/08 职场文书
医德医风自我评价
2014/09/19 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
课程设计感想范文
2015/08/11 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python
详解PyTorch模型保存与加载
2022/04/28 Python