首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js+css实现模态层效果

js+css实现模态层效果

作者头像
lzugis
发布2018-10-23 15:49:41
3.2K0
发布2018-10-23 15:49:41
举报

在做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代码。

源码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档