js+css实现模态层效果

在做web前端的时候,有些时候会涉及到模态层,在此提供一种实现思路,希望对大家有用。先贴效果吧:

模态层效果

下面说说在写模态层的时候的思路:通过可配置的参数width,height,title以及content用来设定弹出的信息框显示的内容,并通过可配置参数container用来设定模态层显示的区域。思路很简单,主要是一些css样式和js处理,详见源码:

modal.css

html,body{
    font-size: 12px;
    font-family: "微软雅黑";
}
.modal{
    position: absolute;
    top:0px;
    left: 0px;
    border: 1px solid #000;
    background: #555;
    opacity: 0.4;
}
.infowin{
    border: 1px solid #777777;
    background: #fff;
    box-shadow: 0 0 0.75em #777777;
    -moz-box-shadow: 0 0 0.75em #777777;
    -webkit-box-shadow: 0 0 0.75em #777777;
    -o-box-shadow: 0 0 0.75em #777777;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -o-border-radius: 5px;
}
 .title{
    border-bottom: 1px solid #777777;
}
.title_content{
    padding: 5px;
    padding-left: 10px;
    font-size: 14px;
    font-family: "微软雅黑";
    font-weight: bold;
}
.close{
    background: url(close.png) no-repeat;
    width: 25px;
    height: 25px;
    float: right;
}
.close:hover{
    cursor: pointer;
}
.content{
    padding-left: 10px;
    padding-top: 10px;
}

jquery.modal.js

(function($){
    $.fn.modalInfowindow = function(options){
        var defaults = {};
        var options = $.extend(defaults, options);
        var container=$(this);
        var width=options.width, height=options.height, title=options.title, content=options.content;
        //模态层容器
        var modal=$("<div id='modal'></div>");
        modal.css("width","100%");
        modal.css("height","100%");
        //模态层
        var modal_div=$("<div class='modal'></div>");
        modal_div.css("width","100%");
        modal_div.css("height","100%");
        //信息框
        var infoWin=$("<div class='infowin'></div>");
        infoWin.css("width",width+"px");
        infoWin.css("height",height+"px");
        infoWin.css("position","absolute");
        infoWin.css("top",(container.height()-height)/2+"px");
        infoWin.css("left",(container.width()-width)/2+"px");
        //标题
        var infoWin_title=$("<div class='title'></div>");
        var infoWin_title_close=$("<div class='close'></div>")
        infoWin_title_close.on("click",function(){
            console.log("Close Modal!");
            modal.hide();
        });
        var infoWin_title_content=$("<div class='title_content'></div>")
        infoWin_title_content.append(title);
        infoWin_title.append(infoWin_title_close);
        infoWin_title.append(infoWin_title_content);
        //内容
        var infoWin_content=$("<div class='content'></div>");
        infoWin_content.append(content);
        //信息框添加标题和内容
        infoWin.append(infoWin_title);
        infoWin.append(infoWin_content);
        //模态层容器添加模态层和信息框
        modal.append(modal_div);
        modal.append(infoWin);
        //将模态层添加到容器
        container.append(modal);
    }
})(jQuery);

将之封装成一个jquery插件,提高可重用性,在页面短的调用方式如下:

<div class="container" id="container">
    <a class="button" onclick="ShowModal()">弹出窗口</a>
</div>

页面端涉及到的样式:

<style type="text/css">
        .container{
            width: 600px;
            height: 300px;
            position: relative;
            border: 1px solid #777777;
        }
        .button{
            position: absolute;
            left: 15%;
            top: 15%;
            background: #eee;
            padding: 5px 10px ;
        }
        .button:hover{
            background: #aaa;
            cursor: pointer;
        }
    </style>

调用modal插件:

 <script type="text/javascript" src="jquery-1.8.3.js"></script>
    <script type="text/javascript" src="jquery.modal.js"></script>
    <script type="text/javascript">
        function ShowModal(){
            $('#container').modalInfowindow({
                width:300,
                height:150,
                title:"中国",
                content:"中国是中华人名共和国的简称"
            });
        }
    </script>

其中,content可为html代码。

源码下载

时间: 2024-11-05 00:49:07

js+css实现模态层效果的相关文章

实用js+css多级树形展开效果导航菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

js+css实现带缓冲效果右键弹出菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

js css 实现遮罩层

<div style=" position: fixed; width: 100%; height: 100%; left: 0px; top: 0px; background-color: Black; z-index: 9999; filter: alpha(opacity=70); Opacity:0.7;"></div> z-index 必须大于遮罩元素 demo <!doctype html> <html> <head&g

IBM官网的JS+CSS的导航菜单效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JS /CSS 实现模态框(注册和登录组件)

1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>JS/CSS 注册表单(模态框设置)</title> 6 <style> 7 8 input[type=email], input[type=password] { 9 width: 100%; 10 padding: 12px 20px; 11 margin: 8

JS实现弹出层效果

很多时候我们想去某某网站干点什么的时候,就会让我们先注册登录后才可以访问内容,而现在很多网站注册登录的时候都会有一种遮罩层的效果,就是背景是带有透明度的黑色遮罩,盖满整个网站,然后登录框弹出固定在屏幕的居中位置.那么,今天就练练这个实用而简单的效果吧.PS:这个是我学习后练习的demo! 首先,需要有一个按钮来模拟登录: <button id="btnLogin"class="login-btn">登录</button> 然后呢,我们想通过点

纯js+css实现loading等待效果

此插件是基于jqueryUI的widget,下面是具体实现代码 第一部分css: /***loading***/ .loading-box{ position:absolute; text-align:center;} .loading-box .loading-message{ height:30px; line-height:30px; color:#999999;} .sideslip{background-color:#f9f9f9; font-size:12px; color:#666

奉献一个实用的JS动画弹出层效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>动画弹出层</title><s

非常常用的一款js css 制作的幻灯片效果

下载地址:百度网盘