JavaScript实现动态遮罩层与滚动跟随效果详解

作者:半夏时间:2026-10-23 07:10:21浏览:460

本文介绍如何使用JavaScript实现网页注册登录时的动态遮罩层效果。通过监听滚动事件,使登录框随页面下滑动态浮动至指定位置,同时遮罩层覆盖下方内容并禁止选中。包含HTML结构、CSS样式及JS交互逻辑的完整实现方案,适用于需要提升用户体验的Web页面开发场景。

遮罩层效果概述

在网页注册或登录场景中,用户经常需要与弹出的遮罩层进行交互。

本示例演示的具体效果为:点击按钮触发遮罩层显示,此时遮罩层下方的页面内容不可被选中。同时,登录框会跟随鼠标滚轮的滚动动态调整位置,最终浮动到页面的特定区域。用户点击关闭按钮后,遮罩层及登录框将隐藏。

如图所示,当鼠标滚动至页面中间某部分时,界面呈现的状态。尽管界面设计简单且颜色为随意选取,但核心功能效果已清晰展现。

遮罩层效果概述

HTML结构实现

以下是实现该效果所需的HTML界面代码结构。


<body>
<!-- 主界面 -->
<div class="main">
  <div onclick="show()">登录</div>
</div>
 
  <!-- 设置遮罩层的div -->
<div id="shade"></div>
  <!-- 设置登录框 -->
<div id="loginBox">
  <div onclick="close()">关闭</div>
</div>
 
</body>

CSS样式定义

对应的CSS样式表定义如下。


*{padding:0px;margin:0px;}
.main{
  width:100%;
  height:3000px;
}
#shade{
  position:absolute;//绝对定位在页面左上角
  top:0px;
  left:0px;
  z-index:1000;
  display:none;
  width:100%;
  height:100%;
  background:yellow;
  opacity:0.3;
}
#loginBox{
  position:absolute;
  top:260px;
  left:30%;
  z-index:2000;
  display:none; 
  width:400px;
  height:200px;
  background:red;
  border:1px solid red;
}

JavaScript交互逻辑

具体的JavaScript交互逻辑代码如下。


<script type="text/javascript">
window.onload=function(){
	window.onscroll=function(){
		//动态设置遮罩层的宽高与屏幕可见宽高一致,实现被遮罩页面的全覆盖
		document.getElementById("shade").style.width=document.body.clientWidth+"px";
		document.getElementById("shade").style.height=document.body.clientHeight+"px";
		
		//兼容谷歌  和 ie/firefox不同浏览器,获取滚动条到浏览器顶部的位置
		var h=document.body.scrollTop + document.documentElement.scrollTop;
		//用定时器实现下滑页面时,登录框延迟从顶部下滑到指定位置  
		setTimeout(function(){
			  //设置登录框始终在界面距离顶部260px的位置,因为style.top获取的值是数值,不带单位,所以在表达式最后人为添加单位
			  document.getElementById("loginBox").style.top=260 + h +"px";
		  },200);
	}
} 
//遮罩层与登录框弹出事件
function show(){ 
  document.getElementById("shade").style.display = "block";
  document.getElementById("loginBox").style.display = "block";
}
//遮罩层与登录框隐藏事件
function close(){
  document.getElementById("shade").style.display = "none";
  document.getElementById("loginBox").style.display = "none";
}
</script>

上述即为完整的实现代码。

以上内容由小编整理,旨在详细介绍JavaScript实现遮罩层动态效果的方法,希望能对读者有所帮助。若有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!

作者最新文章