很棒的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函数(json)附详细说明
May 25 Javascript
js中的string.format函数代码
Aug 11 Javascript
基于mootools插件实现遮罩层新手引导
May 24 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
简单实现Bootstrap标签页
Aug 09 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
Angular2搜索和重置按钮过场动画
May 24 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
世界上最短的数字判断js代码
Sep 09 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
js 如何实现对数据库的增删改查
2012/11/23 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
django实现用户注册实例讲解
2019/10/30 Python
Python 切分数组实例解析
2019/11/07 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
财产公证书格式
2014/04/10 职场文书
中药学自荐信
2014/06/15 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
李强感恩观后感
2015/06/17 职场文书
葬礼主持词
2015/07/02 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
Python预测分词的实现
2021/06/18 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js