很棒的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 相关文章推荐
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
JavaScript中window.showModalDialog()用法详解
Dec 18 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
Nov 17 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
微信小程序实现底部弹出框
Nov 18 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
JavaScript实现打字游戏
Feb 19 Javascript
详解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
PHP SQLite类
2009/05/07 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
非常实用的php验证码类
2016/05/15 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
毕业生自荐信的主要内容
2013/10/29 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
商铺租赁意向书
2014/04/01 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
主持人开场白台词
2015/05/29 职场文书
夏洛特的网观后感
2015/06/15 职场文书
何玥事迹观后感
2015/06/16 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python