弹框组件

因为项目中使用的较多,因此封装了一个组件,便于使用。

/*
*@file 弹框组件
*@description 用于所有提示弹框
*@time 2016/11/29
*/
function PopModel(options) {
    var that = this;
    this.defaults = {
           width: ‘100px‘, // 默认框
          height: ‘120px‘, // 默认高
          isMask: true, // 是否遮罩
             dir: ‘mid‘, // mid中间,left左下,right右下
        addClass: ‘‘, // 设置不同样式的class
        headHtml: ‘<button type="button" class="close">关闭</button>‘, // 头部,不需要直接设置为空
        bodyHtml: ‘‘,// 内容
        footHtml: ‘<input type="button" value="确定" class="confirm"><input type="button" value="取消" class="cancel">‘,// 底部,不需要直接设置为空
        confireFn: function () {}, // 确认回调
         cancelFn: function () {} // 取消回调
    };
    this.opts = $.extend({}, this.defaults, options);
    this.dialogWrap = $(‘<div class="dialog-wrap">‘);
    this.modal = $(‘<div class="qbb-dialog ‘ + this.opts.addClass + ‘" style="position:fixed;border-radius:5px;background:#fff;z-index:99999;width:‘+ this.opts.width+‘;height:‘+ this.opts.height+‘">‘);
    this.header = $(‘<div class="modal-header">‘);
    this.obody = $(‘<div class="modal-body">‘);
    this.footer = $(‘<div class="modal-footer">‘);
    this.mask = $(‘<div class="mask" style="position:fixed;left:0;top:0;width:100%;height:100%;z-index:9999;background:#000;opacity:0.5">‘); // 遮罩

    this.objDir(this.modal, this.opts.dir);
    if (this.opts.headHtml != ‘‘) {
        this.header.append(this.opts.headHtml);
        this.modal.append(this.header);
    }
    if (this.opts.bodyHtml != ‘‘) {
        this.obody.append(this.opts.bodyHtml);
        this.modal.append(this.obody);
    }
    if (this.opts.footHtml != ‘‘) {
        this.footer.append(this.opts.footHtml);
        this.modal.append(this.footer);
    }
    if (this.opts.isMask) {
        $(this.dialogWrap).append(this.mask);
    }
    this.dialogWrap.append(this.modal);
    $(‘body‘).append(this.dialogWrap);

    $(document).on(‘click‘, ‘.mask, .dialog-wrap .close‘, function () {
        that.closeFn();
    });

    $(this.footer).find(‘.confirm‘).on(‘click‘, function() {
        that.opts.confireFn();
        that.closeFn();
    });
    $(this.footer).find(‘.cancel‘).on(‘click‘, function() {
        that.opts.cancelFn();
        that.closeFn();
    })
}

PopModel.prototype = {
    constructor: PopModel,

    // 关闭函数
    closeFn: function () {
       this.dialogWrap.remove();
    },

    // 位置函数
    objDir: function (o, dir) {
        var w = $(o).outerWidth(true);
        var h = $(o).outerHeight(true);
        var winW = $(window).width();
        var winH = $(window).height();
        var oTop = ( winH - h )/2;
        var oLeft = ( winW - w )/2;
        if (dir == ‘mid‘) {
            $(o).css({‘left‘:oLeft, ‘top‘:oTop});
        } else if (dir == ‘left‘) {
            $(o).css({‘left‘:0, ‘bottom‘:0});
        } else if (dir == ‘right‘) {
            $(o).css({‘right‘:0, ‘bottom‘:0});
        }
    }
}

调用:

new PopModel({});

时间: 2024-10-26 22:55:24

弹框组件的相关文章

移动端(H5)弹框组件--简单--实用--不依赖jQuery

俗话说的好,框架是服务与大家的,包含的功能比较多,代码多.在现在追求速度的年代.应该根据自己的需求去封装自己所需要的组件. 下边就给大家介绍一下自己封装的一个小弹框组件,不依赖与jQuery,代码少,适用于一般移动端小项目. 这个插件名称:MobileUi 包含功能:弹框,正在加载,tips1.5秒消失,清除正在加载. 如图:    接下来我来告诉大家怎么用吧!! 第一步:配置<meta name="viewport" content="width=device-wid

VUE2.0增删改查附编辑添加model(弹框)组件共用

Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue-admin/#/login 自己下载下来后仔细研究了起来,发现编辑和增加写了两个弹框,我觉得这不符合vue的组件原则,于是自己把编辑和添加改成共用的 因为也是纯粹的写写前端页面,所以数据方面用的是mock.js,真实的模拟请求. 这个项目用到的 技术栈: vue + webpack + vuex +

vue移动端弹框组件

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg

vue移动端弹框组件的实例

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 ? 1 2 3 4 // 当前最新版本 1.2.0 npm install vue-layer-mobile // 如新版遇到问题可回退旧版本 npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf

vue移动端弹框组件,vue-layer-mobile

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg

微信小程序之----弹框组件modal

modal modal类似于javascript中的confirm弹框,默认情况下是一个带有确认取消的弹框,不过点击取消后弹框不会自动隐藏,需要通过触发事件调用函数来控制hidden属性. 官方文档 .wxml <modal hidden="{{hidden}}" title="这里是title" confirm-text="自定义确定按钮" cancel-text="自定义取消按钮" bindcancel="

vue 弹框组件

组件效果: HTML代码: <div :class="isHidden"> <div :class="promptStyle"> <div :class="iconStyle"></div> <div class= "msgStyle">{{msg}}</div> <div class="prompt-close-btn" @cl

手机页面弹框组件

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1.0" /> <title>Do

自己封装一个弹框插件

弹出层提示信息,这是移动前端开发中最常见的需求,你可能会想到一些流行的弹框插件,比如 经典的artDialog 炫酷的Sweetalert等等.. 但是慢慢地你其实会发现通常情况下需求定制化要求较高,一般的弹框插件可能只满足大部分要求,自定义花的时间还不如手动自己封装一个符合自己开发习惯的弹框组件,这样后续开发效率将大大提高. 首先整理一下思路,原生javascript其实是有实现alert()方法的,但是那个会暂时性中断程序运行,并且足以让你丑拒!那么抛开这些细细一想,其实弹框就是两个div层