用类封装一个pop弹窗组件

下面的弹出框组件使用的是类来封装的。一个弹窗组件通过new一个实例来生成。

下面直接上代码:

html结构:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        /*基本的样式*/
        button{width: 1.6rem;height: 0.5rem;font-size: 0.3rem;line-height: 0.5rem;background: red;color: white;font-weight: bold}
        .hide{display: none;}
        .js-pop{
            width: 100%;
            height: 100%;
            z-index: 100;
            position: absolute;
            top:0;
            left: 0;
            font-size: 0.24rem;
        }
        .js-pop .mask{
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: #000;
            opacity: 0.2;
        }
        .js-pop .content{
            position: fixed;
            top: 50%;
            left: 50%;
            width: 5.80rem;
            height: 4.81rem;
            margin: -2.405rem 0 0 -2.9rem;
            background: url("pop-bg.png") no-repeat;
            background-size: contain;
            color: #262626;
            text-align: center;
        }
        .js-pop .content .close{
            position: absolute;
            top: .25rem;
            right: .08rem;
            width: .54rem;
            height: .48rem;
            z-index: 4;
            cursor:pointer;
        }
       .js-pop .content .prize-title {
            height: .39rem;
            min-width: 1.77rem;
            margin: .28rem auto;
            line-height: 0.39rem;
            color: white;
            text-align: left;
            text-indent: 1rem;
        }
        .js-pop .content .prize-content {
            color: #a40000;
            font-size: .24rem;
            margin:0 0.1rem 0 0.49rem;
            line-height: 0.4rem;
            width: 5.2rem;
        }
    </style>
</head>
<body>
<button id="bb">显示弹窗</button>
<div class="js-pop js-prize-pop hide" id="popLogin">
    <div class="mask"></div>
    <div class="content">
        <div class="close"></div>
        <div class="prize-title">温馨提示</div>
        <div class="prize-content" style="margin-top: 1rem">
            登录后才能参与活动哦!
            <br/>
            自动登录跳转中......
        </div>
    </div>
</div>
<!--引入jquery-->
<script type="text/javascript" src="http://image.37wan.cn/common/js/jquery-1.9.1.min.js"></script>
<!--引入Pop组件-->
<script src="pop.js"></script>
<script>
//    rem代码
    var windowW = $(window).width();
    var ratio = windowW/640;
    $("html").css("fontSize",100*ratio+"px");
    $(window).on("resize",function(){
        var windowW = $(window).width();
        var ratio = windowW/640;
        $("html").css("fontSize",100*ratio+"px");
    });
//new一个Pop实例
    var popLogin=new Pop($("#popLogin"));
    $("#bb").on("click",function(){
        popLogin.open();
    });

</script>
</body>
</html>

pop.js代码:

//Pop的构造函数
    var Pop=function(wrap,option){
        var $this=this;
        var opt={
            closeCall:null
        };
        $.extend(opt,option);
        var mask=wrap.find(".mask");
        //特权方法:1、open();2、close();3、setPrize();4、setContent()控制弹窗内显示的内容
        this.open=function(){
            wrap.show();
            mask.show();
        };
       this.close=function(callbalck){
            wrap.hide();
            mask.hide();
            opt.closeCall&&callbalck();
        };
        this.setPrize=function(text){
            wrap.find(".js-prize").text(text);
        };
        this.setContent = function (text) {
            wrap.find(".js-content").text(text);
        };
        function events(){
            wrap.on("click",".close",function(e){
                e.stopPropagation();
                $this.close(opt.closeCall);
            });
        }
        events();
    };
时间: 2024-08-14 20:18:15

用类封装一个pop弹窗组件的相关文章

基于taro封装底下浮动弹窗组件

先看效果图: jsx: import Taro, { Component } from '@tarojs/taro' import { View, Image } from '@tarojs/components' import closeImg from '../../images/icons/close.png' import './FloatLayout.scss' interface IProps { isOpened: boolean, onClose: Function, title

JS组件系列——封装自己的JS组件

前言:之前分享了那么多bootstrap组件的使用经验,这篇博主打算研究下JS组件的扩展和封装,我们来感受下JQuery为我们提供$.Extend的神奇,看看我们怎么自定义自己的组件,比如我们想扩展一个$("#id").MyJsControl({})做我们自己的组件,我们该如何去做呢,别急,我们慢慢来看看过程. 一.扩展已经存在的组件 1.需求背景 很多时候,我们使用jquery.ajax的方式向后台发送请求,型如 $.ajax({ type: "post", ur

JS组件系列——封装自己的JS组件,你也可以!

前言:之前分享了那么多bootstrap组件的使用经验,这篇博主打算研究下JS组件的扩展和封装,我们来感受下JQuery为我们提供$.Extend的神奇,看看我们怎么自定义自己的组件,比如我们想扩展一个$("#id").MyJsControl({})做我们自己的组件,我们该如何去做呢,别急,我们慢慢来看看过程. 一.扩展已经存在的组件 1.需求背景 很多时候,我们使用jquery.ajax的方式向后台发送请求,型如 $.ajax({ type: "post", ur

使用element-ui二次封装一个可复用弹窗组件

源码链接:可复用弹窗组件 组件: <template> <transition name="el-fade-in"> <div v-if="modalCfg.visible" style="width:100%;height:100%;position:fixed;top:0px;left:0px;z-index:8;"> <!-- 遮罩 --> <div class="ces-ma

封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创建Logger类,完整代码如下: using NLog; using NLog.Config; using NLog.Mongo; using NLog.Targets; using System; using System.Collections.Generic; using System.IO;

vue + elementui 中的弹窗组件封装成公共组件

如果一个弹窗比较简单,可以直接放在页面中,通过visible属性的true,false控制显示隐藏就可以了,我们今天要说的是将个比较复杂的弹窗组件封装成全局组件,然后可以在项目中的任何一个页面引用~~下面走起 1.首先要注册个全局组件,用下面的全局API  Vue.component('my-component', { /* ... */ }) 在js文件中首先引入这个弹窗组件,组件名称是iesPersonRadioDialog,项目中会引入一个js文件,这个js文件中在分别引入其他的js,模块

源码时代前端干货分享|从零动手封装一个通用的vue按钮组件

我们在使用目前最主流的前端框架vue在开发过程中,组件是一个非常重要的组成部分,可以这么说,所有的vue 应用,都是由一个一个的小组件拼装而成的.正是由于vue组件如此重要,所以vue的生态中,也非常多的UI组件库,其中最著名的非Element-UI莫属,里面有非常多的封装完善的组件提供给我们使用,大大的增强了我们的开发效率.那么,这些UI框架的组件,究竟是如何封装的呢?如何动手从零开始封装自己的组件呢?接下来,我们就从最简单的一个Button的组件封装说起.如下,是Element-UI中的按钮

1.使用C++封装一个链表类LinkList

 使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸***********逆置链表********** LinkNode.h #ifndef LINKNODE_H #define LINKNODE_H #include <iostream> class LinkNode { public: int m_idata; LinkNode* m_pnext; }; #end

封装一个简单的solrserver组件

一个简单的solrserver组件 实现索引更新的异步处理,以及查询接口,日志/线程池/队列监控没有加上. SolrDocment封装 接口: public interface ISolrDocument { public SolrInputDocument convertToInputDocument() throws Exception; public void buildSolrDocument(SolrDocument document) throws Exception; } 实现: