jQuery弹出层通用函数封装

弹出层是很多网站都会用到的效果,接下来用实现弹出层函数封装:

(一)先看页面效果:

1. header 顶部导航条最右侧放登陆、注册两个链接

2.点击登陆链接时,弹出登陆窗体


3.点击右侧关闭按钮,登陆窗体关闭

4.点击注册链接时,弹出注册窗体

5.点击右侧关闭按钮,注册窗体关闭


(二)html结构(为简略,结构已省略logo、nav、登录注册等具体内容):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弹出层</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
    <script src="script.js"></script>
</head>
<body>
    <!-- 顶部导航栏 -->
    <header> 
        <a href="#" id="loginLink">登录</a>
        <a href="#" id="regeLink">注册</a>
    </header>

    <!-- 弹出层遮罩-->
    <div class="layer-mask" id="layer-mask"></div>
    <!-- 弹出层窗体-->
    <div class="layer-pop" id="layer-pop">
        <!-- 关闭按钮 -->
        <div class="layer-close" id="layer-close">×</div>
        <!-- 内容区域 -->
        <div class="layer-content" id="layer-content"></div>
    </div>

        <!-- 登陆窗体 -->
        <div class="loginHtml" id="loginHtml" style="display: none;">
            <p style="text-align: center;color: #f00;">这是登陆窗体内容</p>
        </div>
        <!-- 注册窗体 -->
        <div class="regeHtml" id="regeHtml" style="display: none;">
            <p style="text-align: center;color: #f00;">这是注册窗体内容</p>
        </div>
</body>
</html>

(三)简单CSS样式

/*头部样式*/
header{
    width: 1200px;
    height: 80px;
    line-height: 80px;
    text-align: right;
    margin: 0 20px 0 25px;
    overflow: hidden;
    border: 1px #333 solid;
}
header a{
    margin-left: 20px;
    margin-right: 20px;
}

/*弹出层遮罩*/
.layer-mask {
    display: none;
    z-index: 999;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #000;
    opacity: 0.5;
}
/*弹出层窗体*/
.layer-pop {
    display: none;
    z-index: 1000;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
    width: 400px;
    height: 300px;
    background: #fff;
}
/*关闭按钮*/
.layer-close {
    float: right;
    width: 24px;
    height: 24px;
    line-height: 20px;
    text-align: center;
    border-radius: 50%;
    background: #eee;
    border: 3px solid #fff;
    margin-right: -12px;
    margin-top: -12px;
}
.layer-close:hover {
    cursor: pointer;
    background: #ccc;
    color: #fff;
}

(四)jQuery脚本

$(document).ready(function($){
    
    // 登陆链接事件
    $("#loginLink").click(function(){
        //获取登陆窗体代码
        var loginHtml = $("#loginHtml").html();
        showLayer(loginHtml,500,300);
    });

     // 注册链接事件
    $("#regeLink").click(function(){
        //获取注册窗体代码
        var regeHtml = $("#regeHtml").html();
        showLayer(regeHtml,500,300);
    });

    // 封装显示弹出层函数
    function showLayer(html,width,height,closeCallback){
        $("#layer-mask").show();
        $("#layer-pop").show();
        //动态设置弹出层宽度高度
        $("#layer-pop").css({
            width: width,
            height: height
        });
        //填充弹出层窗体内容
        $("#layer-content").html(html);
        //绑定事件,调用hideLayer
        $("#layer-close").click(function(){
            hideLayer();
        });
    };

    // 封装隐藏弹出层函数
    function hideLayer(){
        $("#layer-mask").hide();
        $("#layer-pop").hide();
    };
});

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件功能: * 无限级弹出窗口 * Esc退出block弹出窗口 * 可拖动窗口 * 模态窗口 * 模态alert警告对话框 * 模态confirm对话框 * 页面局部模态 * 绑定按钮响应函数 * 弹出窗口加载iframe * 自定义背景样式 组件提供了六个函数: $.funkyUI // 弹出模态窗口 $.unfunkyUI // 关闭模态窗口 $.alert //警告提示对话框 $.confirm //确认和取消对话框 $.fn.block //块模态 $.fn.unblock//解除块模态 调用示例: $.blockUI({ url:"1.html",//弹出窗口显示的内容,使用iframe OKEvent:okEvent,//okEvent是自定义的确定按钮响应函数, css:{width:"700",height:"500"} }); $.alert("这是警告窗口"); $.confirm("这是个Boolean窗口"); $('#blocked').block();//id为blocked的元素设置为只读 $('#blocked').unblock();//解除 实现的思路: 我在主窗体中创建一个,用来作为弹出窗体,包含一个iframe,通过参数指定URL,作为显示的内容,我觉得可能会有利于代码的重用,代码管理起来要方便一些 弹出窗口中含有的弹出窗口也在主窗体中创建,这样结构简单一点,比较容易管理。我在创建弹出窗口的时候在主窗体中声明一个栈,把当前iframe的window对象压入栈,这样不管我现在弹出了多少个窗口总能很容易的找到其中的任意一个的对象。 有感兴趣的把我的代码下载回去看看,然后给我提提意见,帮我提高。。。 觉得可用的随便用,有不明白的问我

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值