欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js弹出层

程序员文章站 2022-03-08 22:57:46
...

弹出层效果:

  
  js弹出层

 

下面是在网上找的代码:

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>兼容火狐/IE7的可拖动弹出层</title>
<style type="text/css">
.button1 {background: #ebebeb;
border: 1px solid #888888;
color:#333333;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
height:23px;
cursor:pointer }
</style>

<script language="javascript">
function alertWin(title, msg, w, h){
var s=document.getElementsByTagName("select"); //把所有select标签捉住
for(var j=0;j<s.length;j++){s[j].style.display="none";} //设为不显示,再进行下面操作


var titleheight = "20px"; // 提示窗口标题高度
var bordercolor = "#666699"; // 提示窗口的边框颜色
var titlecolor = "#FFFFFF"; // 提示窗口的标题颜色
var titlebgcolor = "#1d5798"; // 提示窗口的标题背景色
var bgcolor = "#FFFFFF"; // 提示内容的背景色
var iWidth = document.documentElement.clientWidth;
var iHeight = document.documentElement.clientHeight;
var bgObj = document.createElement("div");

bgObj.style.cssText = "position:absolute;left:0px;top:0px;width:"+iWidth+"px;height:"+Math.max(document.body.clientHeight, iHeight)+"px;filter:Alpha(Opacity=30);opacity:0.3;background-color:#000000;z-index:101;";
document.body.appendChild(bgObj);


//设置替换:
var msgObj=document.createElement("div");
msgObj.style.cssText = "position:absolute;font:11px '宋体';top:"+(iHeight-h)/2+"px;left:"+(iWidth-w)/2+"px;width:"+w+"px;height:"+h+"px;text-align:center;border:1px solid "+bordercolor+";background-color:"+bgcolor+";padding:1px;line-height:22px;z-index:102;";
document.body.appendChild(msgObj);

var table = document.createElement("table");
msgObj.appendChild(table);
table.style.cssText = "margin:0px;border:0px;padding:0px;";
table.cellSpacing = 0;
var tr = table.insertRow(-1);
var titleBar = tr.insertCell(-1);
titleBar.style.cssText = "width:100%;height:"+titleheight+"px;text-align:left;padding:3px;margin:0px;font:bold 13px '宋体';color:"+titlecolor+";border:1px solid " + bordercolor + ";cursor:move;background-color:" + titlebgcolor;
titleBar.style.paddingLeft = "10px";
titleBar.innerHTML = title;

var moveX = 0;
var moveY = 0;
var moveTop = 0;
var moveLeft = 0;
var moveable = false;
var docMouseMoveEvent = document.onmousemove;
var docMouseUpEvent = document.onmouseup;

titleBar.onmousedown = function() {
var evt = getEvent();
moveable = true;
moveX = evt.clientX;
moveY = evt.clientY;
moveTop = parseInt(msgObj.style.top);
moveLeft = parseInt(msgObj.style.left);

document.onmousemove = function() {
if (moveable) {
var evt = getEvent();
var x = moveLeft + evt.clientX - moveX;
var y = moveTop + evt.clientY - moveY;
if ( x > 0 &&( x + w < iWidth) && y > 0 && (y + h < iHeight) ) {
msgObj.style.left = x + "px";
msgObj.style.top = y + "px";
}
}
};
document.onmouseup = function () {
if (moveable) {
document.onmousemove = docMouseMoveEvent;
document.onmouseup = docMouseUpEvent;
moveable = false;
moveX = 0;
moveY = 0;
moveTop = 0;
moveLeft = 0;
}
};
}
var closeBtn = tr.insertCell(-1);
closeBtn.style.cssText = "cursor:pointer; padding:2px;background-color:" + titlebgcolor;
closeBtn.innerHTML = "<span style='font-size:15pt; color:"+titlecolor+";'>×</span>";
closeBtn.onclick = function(){
for(var j=0;j<s.length;j++){s[j].style.display="";} //select显出来
document.body.removeChild(bgObj);
document.body.removeChild(msgObj);
}
var msgBox = table.insertRow(-1).insertCell(-1);
msgBox.style.cssText = "font:10pt '宋体';";
msgBox.colSpan  = 2;
msgBox.innerHTML = msg;
// 获得事件Event对象,用于兼容IE和FireFox
function getEvent() {
return window.event || arguments.callee.caller.arguments[0];
}
}
</script>
</head>
<body>
<input type="button"  value="  点这里  " class="button1" onclick="alertWin('标题','这里是内容哦,写在这儿',600,150);" />
<select>
<option>获得事件Event对象,用于兼容IE和FireFox</option>
</select>
</body>
</html>

 

 开始分析:

 一.上面的代码不是H5的,因为命名空间问题

 二.然后就是<style>,这个很明显是给button写的,其中有个cursor属性,就是当鼠标移到button上面,鼠标变成手指形状

 三.然后进入JS代码:

   1.首先就是把 所有select标签的内容通过for循环,进行不显示

   2.通过document创建了一个div,并且这个div是绝对定位,并且left:0px;top:0px;还有透明度的设置,也就是说:这个div就是弹出层的那个大背景。

   3.又通过document创建了一个div,并且这个div的位置,比如:top是(IHeight-h)/2;也就是说这个div就是内容弹出栏所在的那个背景

   4.通过document创建了一个table,其中titleBar.innerHTML = title;很明显的告诉我们,那个标题、这里是内容哦,写在这儿等都是放在table中的,

   5.其中onmousemove和onmousedown应该结合这看,鼠标titlebar后,可以把弹出栏进行移动,并进行判断,就是是否超出client的高、宽,在鼠标up后,进行释放

   6.这个就比较巧妙了,通过closeBtn的click事件,移除内容.

   7.当然还有cssText的使用

相关标签: js js弹出层