«

jquery 实现简洁实用的弹窗代码

时间:2024-2-22 14:05     作者:韩俊     分类: Javascript


jquery 实现简洁实用的弹窗代码,两种方法

1. position = absolute 版,这种形式的有个缺点是弹窗会随着滚动条的滚动而滚动,因此仅做参考,不建议使用

css 代码:

.oppoBg{width: 100%;height:100%;position:absolute;background-color: #000;top:0;left:0;opacity: 0.6;z-index:10;margin:0;}
.oppoBox{position:absolute;background-color: #fff;z-index: 11;margin:0;}

js 代码(下面这段 js 代码记得包在 $(function () {......}); 里面):

$('body').click(function (e) {
    //点击非#oppoBox区域关闭弹窗和背景
    if (!$(e.target).closest('#oppoBox').length) {
        $('#oppoBg,#oppoBox').addClass('hide');
    }
});
$('.nameTool').click(function (event) {
    var oppoBox = $('#oppoBox');
    $('#oppoBg').css({'height': $(document).height() + 'px'});
    oppoBox.css({'width': $(document).outerWidth() * 2 / 5 + 'px'});//这里要与下面的分开写
    oppoBox.css({'left': (($(window).width() - oppoBox.outerWidth()) / 2 + $(document).scrollLeft()) + 'px', 'top': (($(window).height() - oppoBox.outerHeight()) / 2 + $(document).scrollTop()) + 'px'});
    $('#oppoBg,#oppoBox').removeClass('hide');
    event.stopPropagation();//阻止事件冒泡
});

html 代码:

<div id="oppoBg" class="hide oppoBg"></div>
<div id="oppoBox" class="hide oppoBox">
    <div>
        <div>这是一个测试弹窗的示例!</div>
    </div>
</div>

2 . position = fixed 版,(推荐这种形式的

css 代码:

.oppoBg{width: 100%;height:100%;position:absolute;background-color: #000;top:0;left:0;opacity: 0.6;z-index:10;margin:0;}
.oppoBox{position:fixed;background-color: #fff;z-index: 11;margin:0;}

js 代码(下面这段 js 代码记得包在 $(function () {......}); 里面):

$('body').click(function (e) {
    //点击非#oppoBox区域关闭弹窗和背景
    if (!$(e.target).closest('#oppoBox').length) {
        $('#oppoBg,#oppoBox').addClass('hide');
    }
});
$('.nameTool').click(function (event) {
    var oppoBox = $('#oppoBox');
    $('#oppoBg').css({'height': $(document).height() + 'px'});
    oppoBox.css({'width': $(document).outerWidth() * 2 / 5 + 'px'});//这里要与下面的分开写
    oppoBox.css({'left': ($(window).width() - oppoBox.outerWidth()) / 2 + 'px', 'top': ($(window).height() - oppoBox.outerHeight()) / 2 + 'px'});
    $('#oppoBg,#oppoBox').removeClass('hide');
    event.stopPropagation();//阻止事件冒泡
});

html 代码:

<div id="oppoBg" class="hide oppoBg"></div>
<div id="oppoBox" class="hide oppoBox">
    <div>
        <div>这是一个测试弹窗的示例!</div>
    </div>
</div>

注意:当页面有多个弹窗的时候,最好一个 box 对应一个 bg,不要多个 box 共用一个 bg。

标签: javascript html css

热门推荐