Dec
01
2023
jquery 实现简洁实用的弹窗代码
作者:
绝缘体.. 发布:
2023-12-01 12:45 分类:
未分类 阅读:
抢沙发
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。
微信扫一扫,打赏作者吧~