css + js animation 简单模态框制作

时间:2023-02-13 20:22:12

**

觉得模态框制作是一件很难的事?那你就out, Let me show you !静下心来,10分钟教你做一个模态框!

**

静不下新来的直接下源码看:下载源码

1 S T

准备个空白htm文件,css文件,然后引入css文件

2 N D

首先 ,你需要知道原理,按常理说,简单的弹出模态框就只需要两个div,一个是外层的div , 用来实现当你调用模态框的时候的背景变为全灰和不可选状态;再有一个内层的div,用来展示你模态框的内容的容器。我是把整个容器封成了JS对象API,供大家调用。

上代码:

        function Modelbox() {
       this.set = function(params) {
       $("body").append('<div class="model-box" id="modelbox"><div class="model-alert" id="modelalert"></div></div>');
        $("#modelalert").css(params.direction, params.fromwhere + '%').empty();
        // params.direction  
        // params.speed
        // params.from
        // params.to
        // params.fromwhere
        // params.towhere
        // params.templateURL
        $.ajax({
            'method': 'get',
            'url': params.templateURL,
            success: function(response) {
                $("#modelalert").append(response);
            }
        })

        this.show = function() {
            $("#modelbox").show();
            if (params.direction == 'left') {
                $("#modelalert").animate({
                    left: params.towhere + '%'
                }, params.speed);
                $("#modelbox").click(function() {

                    $("#modelalert").animate({
                        left: params.fromwhere + "%"
                    }, params.speed, function() {
                        // body...
                        $("#modelbox").hide();
                        $("#modelbox").remove();
                    });
                });
            } else {
                $("#modelalert").animate({
                    right: params.towhere + '%'
                }, params.speed);
                $("#modelbox").click(function() {
                    $("#modelalert").animate({
                        right: params.fromwhere + "%"
                    }, params.speed, function() {
                        // body...
                        $("#modelbox").hide();
                        $("#modelbox").remove();
                    });

                });
            }
            $("#modelalert").click(function(event) {
                // event.stopPropagation();
                return false;
            })
        }
        show();
    }
    return this;
   }

首先,这是一个类,类中有两个成员,set 和 show, set用于设置初始化的参数,比如说弹出的方向,位置,速度等, show 用于实例化参数,方便容器调用

CSS CODE:

   .model-box{
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    background-color:#C9C9C9;
    opacity: 0.5;
    display: none;
    cursor: not-allowed;
}
.model-alert{
    position: absolute;
    top: 5em;
    width:60%;
    height: 80%;
    background-color: #fff;
    color:#000;
    opacity: 1.5;
    box-shadow: 1px 1px 3px 3px #7A7575;
    cursor: pointer;
}

model-box用于设置外层div容器的css,model-alert用于设置内层css的样式。

3 R D

实例化并调用:

var model = Modelbox();

$("#model").click(function(){
  model.set({
    'direction': 'right',
    'fromwhere': 160,
    'towhere': 20,
    'speed': 'slow',
    'templateURL': 'tpls/gets/msg.html'
  });
});

这里设置了一个ID 为model的button用来触该模态框,directon为模态框弹出的方向,fromwhere 是模态框的初始位置,单位%,towhere为模态框的终点位置,speed为弹出的速度,对应的值可以参考animation函数的speed,templateURL为容器中的内容,可以是另外一个html文件,这样方便编写。

让我们来看看效果(记得放在本地服务器下测试哦~~):

css + js animation 简单模态框制作