JavaScript 实现全屏蒙版与滚动条隐藏
作者:微光时间:2026-10-23 14:22:44浏览:353
本文介绍如何使用JavaScript实现网页全屏蒙版效果。核心逻辑包括监听按钮点击、阻止事件冒泡以控制蒙版显示,以及通过修改body样式隐藏滚动条。重点讲解了如何获取点击目标ID并处理文档级点击事件以关闭蒙版,附带完整CSS与JS代码示例。
JavaScript 实现全屏蒙版与滚动条隐藏
本文提供了使用JavaScript实现网页蒙版效果的具体代码示例,供读者参考学习。
实现思路
主要步骤如下: 1. 监听触发按钮的点击事件。 2. 阻止事件冒泡,这是实现功能的关键环节。 3. 将原本隐藏的蒙版元素显示出来。 4. 隐藏页面滚动条,防止背景内容滚动。 5. 监听整个文档的点击事件:获取被点击的标签元素,判断其身份。若点击发生在蒙版区域外,则将所有显示的元素重新隐藏,并恢复滚动条的显示。
<style>
*{
margin: 0;
padding: 0;
}
html,body{
width:100%;
height:100%;
}
#panel{
width:100%;
height:2000px;
background-color:#000;
opacity: 0.4; //透明度
filter: alpha(opacity: 40); //用于兼容IE浏览器
position: absolute;
top:0;
left:0;
display: none;
}
#box{
width:300px;
height:300px;
background-color: #fff;
position: absolute;
top:50%;
left:50%;
margin-left:-150px;
margin-top:-150px;
display: none;
border-radius: 5px;
}
</style>
</head>
<body>
<button id="btn">登录</button>
<div id="panel"></div>
<div id="box"></div>
<script src="js/myFunc.js"></script>
<script>
window.onload = function (){
//1.监听事件的点击
btn.onclick = function (event){
//1.0 阻止冒泡
if(event && event.stopPropagation){ //W3c标准
event.stopPropagation();
}else{ //IEx系列 IE 678
event.cancelBubble = ture;
}
//1.1隐藏的显现出来
$("box").style.display = "block";
$("panel").style.display = "block";
//1.2隐藏滚动条
document.body.style.overflow = "hidden";
}
//2.点击文档
document.onclick = function (event){
var e = event || window.event;
//2.1获取点击的标签
var tranId = e.target ? e.target.id : e.srcElement.id; //target:获取当前操作对象
//2.2判断
if(tranId !== "box"){
//1.1显示的隐藏出来
$("box").style.display = "none";
$("panel").style.display = "none";
//1.2显示滚动条
document.body.style.overflow = "auto";
}else{
window.location.href = "http://www.baidu.com";
}
}
}
</script>
最关键的技术点在于正确阻止事件冒泡。在事件处理函数中,需要获取触发事件的元素ID。兼容不同浏览器的写法为:var tranId = e.target ? e.target.id : e.srcElement.id;
以上就是本文的全部内容,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。
作者最新文章
JavaScript零基础入门:从环境搭建到运行第一段代码
2026-11-05 15:29:58
HTML链接中javascript:void(0)的作用及现代替代方案
2026-11-05 10:07:47
在线调试 JS 时怎么引入 jQuery 或 Vue 等第三方库
2026-11-05 08:53:56
原生JavaScript实现简易颜色选择器原理与代码
2026-11-03 23:22:19
JS原生表单序列化:FormData与URLSearchParams用法详解
2026-11-03 23:13:21
