转自http://www.111cn.net/js_a/javascript/45718.htm
<!DOCTYPE html>
<html><head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
/*
@名称: base
@功能: 重设浏览器默认样式
*/
/* 防止用户自定义背景颜色对网页的影响,添加让用户可以自定义字体 */
html{
color:#000;background:#fff;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
/* 内外边距通常让各个浏览器样式的表现位置不同 */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
margin:0;padding:0;
}
/* 重设 HTML5 标签, IE 需要在 js 中 createElement(TAG) */
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
display:block;
}
/* HTML5 媒体文件跟 img 保持一致 */
audio,canvas,video {
display: inline-block;*display: inline;*zoom: 1;
}
/* 要注意表单元素并不继承父级 font 的问题 */
body,button,input,select,textarea{
font:12px/1.5 tahoma,arial,5b8b4f53;
}
input,select,textarea{
font-size:100%;
}
/* 去掉各Table cell 的边距并让其边重合 */
table{
border-collapse:collapse;border-spacing:0;
}
/* IE bug fixed: th 不继承 text-align*/
th{
text-align:inherit;
}
/* 去除默认边框 */
fieldset,img{
border:0;
}
/* ie6 7 8(q) bug 显示为行内表现 */
iframe{
display:block;
}
/* 去掉 firefox 下此元素的边框 */
abbr,acronym{
border:0;font-variant:normal;
}
/* 一致的 del 样式 */
del {
text-decoration:line-through;
}
address,caption,cite,code,dfn,em,th,var {
font-style:normal;
font-weight:500;
}
/* 去掉列表前的标识, li 会继承 */
ol,ul {
list-style:none;
}
/* 对齐是排版最重要的因素, 别让什么都居中 */
caption,th {
text-align:left;
}
/* 来自yahoo, 让标题都自定义, 适应多个系统应用 */
h1,h2,h3,h4,h5,h6 {
font-size:100%;
font-weight:500;
}
q:before,q:after {
content:'';
}
/* 统一上标和下标 */
sub, sup {
font-size: 75%; line-height: 0; position: relative; vertical-align: baseline;
}
sup {top: -0.5em;}
sub {bottom: -0.25em;}
/* 让链接在 hover 状态下显示下划线 */
a:hover {
text-decoration:underline;
}
/* 默认不显示下划线,保持页面简洁 */
ins,a {
text-decoration:none;
}
/* 清理浮动 */
.fn-clearfix:after {
visibility:hidden;
display:block;
font-size:0;
content:" ";
clear:both;
height:0;
}
.fn-clearfix {
zoom:1; /* for IE6 IE7 */
}
/* 隐藏, 通常用来与 JS 配合 */
body .fn-hide {
display:none;
}
/* 视觉隐藏,但在布局中占位*/
.fn-invisible {
visibility: hidden;
}
/* 设置内联, 减少浮动带来的bug */
.fn-left,.fn-right {
display:inline;
}
.fn-left {
float:left;
}
.fn-right {
float:right;
}
/* 设置全局样式 */
.text-size12{font-size:12px;}
.text-size14{font-size:14px;}
.text-size16{font-size:16px;}
.text-size18{font-size:18px;}
body{
min-width: 1000px;
overflow: auto;
}
.wrapper{
width: 1000px;
font-size: 14px;
margin: 0 auto;
}
.words{
margin-bottom: 200px;
}
.popup-layer{
z-index: 1000;
position: absolute;
top:0;
left: 0;
display: none;
background: rgba(0,0,0,0.75);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#CC000000,endColorstr=#CC000000);
cursor: auto;
}
.popup-layer-box{
position: absolute;
width: 700px;
height: 400px;
background-color: #94C2E0;
}
.close-popupLayer{
position: absolute;
top: 2px;
right: 2px;
font-size: 40px;
line-height: 40px;
color: red;
font-weight: bold;
cursor: pointer;
}
.btn-popup{
padding: 20px;
cursor: pointer;
font-size: 20px;
font-weight: bold;
color: red;
}
</style>
</head>
<body>
<div class="wrapper">
<p><input type="button" value="click me~" class="btn-popup" id="btnPopup" /></p>
<p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p>
</div>
<div id="popupLayer" class="popup-layer">
<div id="popupLayerBox" class="popup-layer-box">
<div id="closePopupLayer" class="close-popupLayer">×</div>
</div>
</div>
<script type="text/javascript" >
var Popup=(function(){
var close_trigger, //关闭弹出层触发器
popup_layer, //弹出层
popup_layer_box; //弹出层里的box
//设置弹出层的高、宽度
function initLayer(){
//先初始化先,不然resize有问题
popup_layer.style.width=0+"px";
popup_layer.style.height=0+"px";
var winWidth,
winHeight;
if (window.innerWidth){
winWidth = window.innerWidth;
}else if ((document.body) && (document.body.clientWidth)){
winWidth = document.body.clientWidth;
}
//获取窗口高度
if (window.innerHeight){
winHeight = window.innerHeight;
}else if ((document.body) && (document.body.clientHeight)){
winHeight = document.body.clientHeight;
}
//通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth){
winHeight = document.documentElement.clientHeight;
winWidth = document.documentElement.clientWidth;
}
popup_layer.style.width=winWidth+"px";
popup_layer.style.height=winHeight+"px";
var scrollTop=(document.documentElement.scrollTop>document.body.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop;
popup_layer.style.top=scrollTop+"px";
}
//设置弹出层里面box的位置
function initLayerBox(){
var layerHeight=parseInt(popup_layer.style.height),
boxHeight=popup_layer_box.offsetHeight,
layerWidth=parseInt(popup_layer.style.width),
boxWidth=popup_layer_box.offsetWidth,
top=(layerHeight-boxHeight)/2,
left=(layerWidth-boxWidth)/2;
popup_layer_box.style.top=top+"px";
popup_layer_box.style.left=left+"px";
}
function closeLayerHandler(event){
var e=event?event:window.event,
target=e.target||e.srcElement;
if(target.id===close_trigger.id||target.id===popup_layer.id){
popup_layer.style.display='none';
toggleBody('auto','');
}
}
function popupResizeHandler(){
initLayer();
initLayerBox();
}
function toggleBody(bo,ho){
document.body.style.overflow=bo;
document.getElementsByTagName('html')[0].style.overflow=ho; //ie6下直接设置body的overflow时有问题,所以加多这一句
}
return{
init:function(close_trigger_id,popup_layer_id,popup_layer_box_id){
close_trigger=document.getElementById(close_trigger_id);
popup_layer=document.getElementById(popup_layer_id);
popup_layer_box=document.getElementById(popup_layer_box_id);
window.οnresize=popupResizeHandler;
close_trigger.οnclick=closeLayerHandler;
popup_layer.οnclick=closeLayerHandler;
},
popup:function(){
toggleBody('hidden','visible');
popup_layer.style.display="block";
initLayer();
initLayerBox();
}
}
}());
var trigger=document.getElementById('btnPopup');
Popup.init('closePopupLayer','popupLayer','popupLayerBox');
trigger.οnclick=Popup.popup;
</script>
</body>
</html></td>
</tr>
</table>