原生JavaScript实现Div弹出层、遮罩与拖拽功能

作者:木棉

时间:2026-10-29

浏览:300

本文介绍如何使用原生JavaScript实现Div弹出层,包含居中显示、黑色半透明遮罩层以及鼠标拖拽功能。通过操作DOM元素样式和事件监听,实现弹出层的显示、隐藏及交互,无需依赖第三方插件,适合需要轻量级解决方案的场景。

文章目录

原生JavaScript实现Div弹出层、遮罩与拖拽功能

本文详细介绍利用JavaScript实现Div弹出层的具体方法,供读者参考学习。

当前虽然有许多现成的插件可以方便地实现弹出层效果,但有时为了追求轻量或避免依赖,开发者更倾向于使用纯JavaScript编写的原生代码。下面分享一个基于原生JS的Div弹出层实例,供有需要的开发者参考。

此处直接提供代码实现,代码中已包含详细注释以便理解。

代码如下:

/*
* 弹出DIV层
*/
function showDiv()
{
var Idiv = document.getElementById("Idiv");
var mou_head = document.getElementById('mou_head');
Idiv.style.display = "block";
//以下部分要将弹出层居中显示
Idiv.style.left=(document.documentElement.clientWidth-Idiv.clientWidth)/2+document.documentElement.scrollLeft+"px";
Idiv.style.top =(document.documentElement.clientHeight-Idiv.clientHeight)/2+document.documentElement.scrollTop-50+"px";
 
//以下部分使整个页面至灰不可点击
var procbg = document.createElement("div"); //首先创建一个div
procbg.setAttribute("id","mybg"); //定义该div的id
procbg.style.background = "#000000";
procbg.style.width = "100%";
procbg.style.height = "100%";
procbg.style.position = "fixed";
procbg.style.top = "0";
procbg.style.left = "0";
procbg.style.zIndex = "500";
procbg.style.opacity = "0.6";
procbg.style.filter = "Alpha(opacity=70)";
//背景层加入页面
document.body.appendChild(procbg);
document.body.style.overflow = "hidden"; //取消滚动条
 
//以下部分实现弹出层的拖拽效果
var posX;
var posY;
mou_head.onmousedown=function(e)
{
if(!e) e = window.event; //IE
posX = e.clientX - parseInt(Idiv.style.left);
posY = e.clientY - parseInt(Idiv.style.top);
document.onmousemove = mousemove;
}
document.onmouseup = function()
{
document.onmousemove = null;
}
function mousemove(ev)
{
if(ev==null) ev = window.event;//IE
Idiv.style.left = (ev.clientX - posX) + "px";
Idiv.style.top = (ev.clientY - posY) + "px";
}
}
function closeDiv() //关闭弹出层
{
var Idiv=document.getElementById("Idiv");
Idiv.style.display="none";
document.body.style.overflow = "auto"; //恢复页面滚动条
var body = document.getElementsByTagName("body");
var mybg = document.getElementById("mybg");
body[0].removeChild(mybg);
}
<!--弹出层开始-->
<div id="Idiv" style="display:none; position:absolute; z-index:1000; background:#67a3d9;">
 <div id="mou_head" style="width="100px; height=10px;z-index:1001; position:absolute;">这个是用来实现拖层</div>
 <input type="button" value="关闭" onclick="closeDiv();" />
</div>
<!--结束-->

至于一些美化效果,大家可以自己去修修改改了。

希望本文所述对大家的javascript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章