专栏首页跟牛老师一起学WEBGISjs+css实现模态层效果

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

源码下载

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CSS+JS实现tab标签切换

    循环将所有的内容标签隐藏,并将tab标题栏的active样式清除,完了之后设置选中标签的内容显示,并给tab标题栏添加active样式。

    lzugis
  • 固定表头和第一列表格的实现

    在开发的时候,我们有时候会有这样的需求:由于表格的内容比较多,如果横竖都出现滚动条就看不到表头了,这就要求表格的表头和第一列固定,并且出现双向滚动条。本文就就给...

    lzugis
  • jquery自定义插件——window的实现

    lzugis
  • css中text-align:center;和margin:0 auto;区别

    区别:<!– 1.text-align:center;和margin:0 auto;区别 text-align: center;作用 设置盒子中存储的文字...

    用户7873631
  • 插件集--页面滚动scrollreveal.js

    scrollReveal.js 不依赖其他任何文件。不支持 IE10 以下 基本方法

    余生
  • 芯片卡可解决信用卡数据失窃难题

    Supervalu的数据被窃事件则再次表明,由于美国银行和零售商更新收费电脑终端的速度太慢,消费者的个人数据仍然面临着很大的被窃风险。目前,美国...

    安恒信息
  • python_求解一元二次方程解

    瑞新
  • 华泰人寿使用红帽OPENSHIFT 构建开源系统 赋予IT新活力

    华泰人寿保险股份有限公司(以下简称:华泰人寿)是一家由国内外实力雄厚的金融保险集团和知名企业发起设立的全国性寿险公司,股东投入资金超过30亿元,在中国开设了两百...

    魏新宇
  • C#仪器数据文件解析-Word文件(doc、docx)

    不少仪器数据报告输出为Word格式文件,同Excel文件,Word文件doc和docx的存储格式是不同的,相应的解析Word文件的方式也类似,主要有以下方式: ...

    用户1637609
  • 用selenium自动化验收测试

    用 Selenium 自动化验收测试 如何使用 Selenium 测试工具对 Ruby on Rails 和 Ajax 应用程序进行功能测试 文档选项 将此...

    阿新

扫码关注云+社区

领取腾讯云代金券