`
hbxiao135
  • 浏览: 108845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

div层实现IE Firefox 页面半透明遮罩效果弹窗

阅读更多
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="test.css" media="screen" rel="stylesheet" type="text/css" />
<title>IE-firfox-弹出 背景 拖动层</title>
<script type="text/javascript">
//获取滚动条的高度
function getPageScroll(){
    var xScroll,yScroll;
    if (self.pageYOffset) {
    yScroll = self.pageYOffset;
    xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop){
    yScroll = document.documentElement.scrollTop;
    }else if (document.documentElement && document.documentElement.scrollLeft){
    xScroll = document.documentElement.scrollLeft;
    } else if (document.body) {
    yScroll = document.body.scrollTop;
    xScroll = document.body.scrollLeft;
    }
    arrayPageScroll = new Array(xScroll,yScroll)
    return arrayPageScroll;
}
//获取页面实际大小
function getPageSize(){
    var xScroll,yScroll;
    if (window.innerHeight && window.scrollMaxY){
    xScroll = document.body.scrollWidth;
    yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight){
    sScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
    } else {
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
    }
    var windowWidth,windowHeight;
    //var pageHeight,pageWidth;
    if (self.innerHeight) {
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
    } else if (document.body) {
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
    }
    var pageWidth,pageHeight
    if(yScroll < windowHeight){
    pageHeight = windowHeight;
    } else {
    pageHeight = yScroll;
    }
    if(xScroll < windowWidth) {
    pageWidth = windowWidth;
    } else {
    pageWidth = xScroll;
    }
    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
    return arrayPageSize;
}
//弹出层
function openLayer(objId,conId,w,h){
    var arrayPageSize   = getPageSize();//调用getPageSize()函数
    var arrayPageScroll = getPageScroll();//调用getPageScroll()函数
    if (!document.getElementById("popupAddr")){
        //创建弹出内容层
        var popupDiv = document.createElement("div");
        //给这个元素设置属性与样式
        popupDiv.setAttribute("id","popupAddr")
        popupDiv.style.position = "absolute";
        popupDiv.style.zIndex = 99;
        popupDiv.style.width = w + "px";
        popupDiv.style.height = h + "px";
        //创建弹出背景层
        var bodyBack = document.createElement("div");
        bodyBack.setAttribute("id","bodybg")
        bodyBack.style.position = "absolute";
        bodyBack.style.width = "100%";
        bodyBack.style.height = (arrayPageSize[1] + 35 + 'px');
        bodyBack.style.zIndex = 98;
        bodyBack.style.top = 0;
        bodyBack.style.left = 0;
        bodyBack.style.filter = "alpha(opacity=80)";
        bodyBack.style.opacity = 0.8;
        bodyBack.style.background = "#ddf";
        //实现弹出(插入到目标元素之后)
        var mybody = document.getElementById(objId);
        insertAfter(popupDiv,mybody);//执行函数insertAfter()
        insertAfter(bodyBack,mybody);//执行函数insertAfter()
    }
    //显示背景层
    document.getElementById("bodybg").style.display = "";
    //显示内容层
    var popObj=document.getElementById("popupAddr")
    popObj.innerHTML = document.getElementById(conId).innerHTML;
    popObj.style.display = "";
    //让弹出层在页面中垂直左右居中(个性)
    var arrayConSize=getConSize(conId,w,h)
    if(arrayPageSize[3] < arrayConSize[1])
      popObj.style.top = 0 + 'px';
    else
      popObj.style.top  = arrayPageScroll[1] + (arrayPageSize[3] - arrayConSize[1]) / 2 + 'px';
    if(arrayPageSize[0] < arrayConSize[0])
        popObj.style.left = 0 + 'px';
    else
      popObj.style.left = (arrayPageSize[0] - arrayConSize[0]) / 2 + 'px';
}
//获取内容层内容原始尺寸
function getConSize(conId,w,h){
    var conObj=document.getElementById(conId)
    conObj.style.position = "absolute";
    conObj.style.left=-1000+"px";
    conObj.style.display="";
    conObj.style.width= w + "px";
    conObj.style.height= h + "px";
    var arrayConSize=[0,0];
    arrayConSize[0]=conObj.offsetWidth;
    arrayConSize[1]=conObj.offsetHeight;
    conObj.style.display="none";
    return arrayConSize;
}
//插入
function insertAfter(newElement,targetElement){
    var parent = targetElement.parentNode;
    if(parent.lastChild == targetElement){
        parent.appendChild(newElement);
    }
    else{
        parent.insertBefore(newElement,targetElement.nextSibling);
    }
}
//关闭弹出层
function closeLayer(){
    document.getElementById("popupAddr").style.display = "none";
    document.getElementById("bodybg").style.display = "none";
    return false;
}
//拖拽
//对“拖动点”定义:onMousedown="StartDrag(event)"即可
var move=false,_X,_Y;
var isIE = document.all ? true : false;
function StartDrag(e){  //定义准备拖拽的函数  按下鼠标onMousedown
  var parentwin=document.getElementById("popupAddr");
  var d = document;
  var e = e ? e : event;
  if(isIE){parentwin.setCapture(); //对当前对象的鼠标动作进行跟踪
  }else{
    window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
  }
    move=true;
    //获取鼠标相对内容层坐标
    _X=parentwin.offsetLeft-e.clientX
    _Y=parentwin.offsetTop-e.clientY

    var arrayPageSize   = getPageSize();//调用getPageSize()函数
    var arrayPageScroll = getPageScroll();//调用getPageScroll()函数

    d.onmousemove = function(e){//定义拖拽函数  鼠标放上 拖动onMousemove
        var e = e ? e : Event;
        if(move){
            var parentwin=document.getElementById("popupAddr");
            var x = e.clientX+_X
            var y = e.clientY+_Y
            
            if (x<=0)
               x = 0
            if (y<=0)
               y = 0
            
            parentwin.style.left= (x)+ "px";;
            parentwin.style.top= (y)+ "px";;
        }
    }
    d.onmouseup = function (){//定义停止拖拽函数  松开鼠标 onMouseup
        //停止对当前对象的鼠标跟踪
        if(isIE){parentwin.releaseCapture();}
        else{window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);}  
        move=false;
    }

}

</script>
</head>
<body>

<input name="Input"  id="test3" value="弹出层" type="button" onclick="openLayer('test3','test','400','300')" />
<div id="test" style="display:none">
    <div id="contain" class="contain">
        <div id="dtit" class="dlgtit" onMousedown="StartDrag(event)">
            <div id="tl"></div>
            <div id="tc"><span>弹出普通带遮罩层的窗口-标题</span></div>
            <div id="tr"></div>
            <div id="xbtn" onclick="closeLayer();" onMouseover="this.style.backgroundPosition = '0 -19px';" onMouseout="this.style.backgroundPosition = '0 0';"></div>
        </div>
        <div id="dinner" class="dlginner"  style="height: 238px;">
            <div id="throbber" style="position:absolute;visibility:hidden;">正在加载窗口内容,请稍等....< /div>
        </div>
        <div id="dfoot" class="dlgfoot">
            <div id="bl"></div>
            <div id="bc"></div>
            <div id="br"></div>
            <div id="cbtn" onclick="closeLayer();" onMouseover="this.style.backgroundPosition = '0 -21px';" onMouseout="this.style.backgroundPosition = '0 0';"><span>取 消</span></div>
            <div id="obtn" onclick="alert('确定事件!');" onMouseover="this.style.backgroundPosition = '0 -21px';" onMouseout="this.style.backgroundPosition = '0 0';"><span>确 定</span></div>
        </div>
    </div>
</div>

</body>
</html>
 
2
1
分享到:
评论
2 楼 hbxiao135 2010-04-08  
walkingp 写道
在firefox中拖动会有不灵活的表现:已经松开了鼠标还是在跟着鼠标走。博主要看看是怎么一回事。

已经解决,请重新下载附件
1 楼 walkingp 2010-03-01  
在firefox中拖动会有不灵活的表现:已经松开了鼠标还是在跟着鼠标走。博主要看看是怎么一回事。

相关推荐

    js 弹出窗口 弹出div window 支持遮罩、拖动、嵌入页面、换肤等实用功能

    1. **遮罩效果**:遮罩层是在弹出窗口后面添加一个半透明的背景层,以突出显示弹出窗口并防止用户与页面其他部分互动。实现这一效果通常涉及到CSS的透明度和定位属性,以及JavaScript来动态调整遮罩层的大小和显示。...

    div 弹出层遮罩 兼容各大浏览器

    遮罩层通常设置为全屏大小,具有一定的透明度,以达到半透明效果,而弹出层则位于页面中央,用于展示具体内容。 要实现这种效果,我们需要掌握以下技术点: 1. **CSS样式**:使用CSS来定义`div`的样式,包括位置、...

    JS遮罩层效果

    本文将详细介绍如何使用JS实现这种遮罩层效果,并探讨其在IE、Firefox以及jQuery环境下的应用。 首先,让我们理解遮罩层的基本原理。遮罩层通常由两个主要部分组成:遮罩元素和目标元素。遮罩元素是覆盖在页面上的...

    遮罩层效果(最新),简单易用

    描述中提到"兼容IE\FF\google等主流浏览器",这意味着这个遮罩层解决方案经过优化,可以在Internet Explorer、Firefox和Chrome这些广泛使用的浏览器上正常工作。对于开发者来说,跨浏览器兼容性是至关重要的,因为...

    div遮罩层.txt

    遮罩层是一种常见的网页设计技术,主要用于在页面上覆盖一层半透明或不透明的层,以此来突出显示某个特定元素或者区域。这种技术广泛应用于模态窗口、弹出框等场景。 ##### 1.2 DIV遮罩层的基本原理 在Web开发中,...

    全屏loading图有遮罩效果 当显示全屏loading图时无法操作页面上的按钮

    全屏遮罩是一种半透明的覆盖层,它覆盖整个网页,让用户知道当前页面已处于非交互状态。遮罩的颜色通常是淡灰色或黑色,具有一定的透明度,使得用户能够隐约看到页面背景,但无法直接与页面内容进行交互。这样做是...

    页面加载中(遮罩层支持ajax、模拟查询、模拟保存、模拟导入、模拟隐藏、模拟刷新、全屏遮罩、兼容ie、谷歌、火狐等浏览器)2016.09.13.zip

    2. **页面加载中遮罩层**:遮罩层通常是一个半透明的div,覆盖在网页上,用于提示用户页面正在加载或处理中,避免用户在数据加载完成前进行不必要的操作。它可以提供更好的用户体验,让用户知道系统正在进行后台工作...

    css div实现的遮罩层完美兼容IE6-IE9 FireFox

    本篇文章将详细介绍如何使用CSS和div元素来创建一个兼容IE6到IE9以及Firefox的遮罩层。 首先,我们需要在HTML中定义两个div元素。一个是`#black_overlay`,它作为遮罩层,覆盖整个页面,通常具有半透明黑色背景;另...

    精典源码之遮罩层效果.rar

    在IT行业中,遮罩层(Mask Layer)是一种常见的前端网页设计技术,用于在页面上创建一个半透明或全透明的覆盖层,以突出显示特定内容或执行特定操作时,阻止用户与页面其他部分的交互。这个名为“精典源码之遮罩层...

    div_css_js弹出层有遮罩

    这一技术结合了HTML的`&lt;div&gt;`元素、CSS样式以及JavaScript/jQuery的动态效果,以实现具有半透明遮罩层的弹出层效果。下面将详细讲解这个知识点。 1. **HTML `&lt;div&gt;`元素**: `&lt;div&gt;`是HTML中的一个块级元素,用于...

    js弹出遮罩提示框支持IE,firefox

    本文将深入探讨如何使用JavaScript实现一个兼容IE和Firefox浏览器的弹出遮罩提示框,并且会涉及到一些很酷的效果。 首先,我们需要理解“遮罩”和“提示框”的概念。遮罩通常是一个半透明的层,覆盖在网页的主内容...

    DIV半透明代码 兼容主流浏览器

    本文将详细讲解如何用CSS实现`&lt;div&gt;`的半透明效果,并确保兼容主流浏览器。 首先,让我们看看提供的代码片段: ```html &lt;div style="filter: alpha(opacity=50);-moz-opacity: 0.5;opacity: 0.5;width: 100%;"&gt; ...

    半透明模式对话框类(js源)

    1. `mask.gif`:这可能是一个用于对话框背景的半透明图片,通常用来创建遮罩效果,使得用户不能直接与对话框背后的页面元素互动。 2. `mask.html`:这是一个HTML文件,可能是对话框的示例或者测试页面,展示如何在...

    div 应用 弹出层 包含页面测试代码

    还可以通过设置`opacity`和`background-color`实现半透明遮罩效果,增强用户体验。 2. JavaScript/jQuery:JavaScript可以监听用户交互,如点击事件,然后动态修改`div`的样式以展示或隐藏弹出层。例如,使用`...

    超级爽的 js 遮罩层 谦容 FF IE 支持拖动...

    在JavaScript编程中,创建一个兼容Firefox(FF)和Internet Explorer(IE)的遮罩层是一项常见的需求,特别是在构建交互式Web应用或者需要弹出框、提示信息时。标题中的"超级爽的 js 遮罩层 谦容 FF IE 支持拖动...

    jQuery鼠标悬停在图片上效果,鼠标悬停后出现遮罩效果,并淡入出现文字,兼容主流浏览器

    这样,当用户将鼠标悬停在图片上时,就会看到一个半透明的遮罩层淡入,同时文字也会淡入显示。这个效果在Chrome、Firefox、Safari、Edge等主流浏览器中都应能正常工作。 为了确保兼容性,可以使用jQuery的`$....

    jQuery鼠标悬停图片遮罩效果.zip

    当用户将鼠标指针悬停在图片上时,会覆盖一层半透明的遮罩,同时显示相关的文字信息。这种效果在产品展示、图片预览等场景中尤为常见,能够增加网站的互动性和专业感。 实现这一效果主要依赖于JavaScript库jQuery,...

    最中间弹出对话框,遮罩层 可以拖动

    2. **遮罩层**:遮罩层是覆盖在对话框下方的半透明层,用于突出显示对话框并阻止用户对背景内容的操作。实现遮罩层,我们可以创建一个全屏的div元素,设置合适的透明度和背景颜色,然后将其定位在页面底部。当对话框...

Global site tag (gtag.js) - Google Analytics