css+div 怎么实现弹出层100% 显示 也就是说能适应不同浏览器的分辨率 弹出层是一半透明的层

html-css023

css+div 怎么实现弹出层100% 显示 也就是说能适应不同浏览器的分辨率 弹出层是一半透明的层,第1张

<script type="text/javascript">

function init() {

// 获取文档尺寸

var documentSize = getDocumentSize()

// 获取视窗尺寸

var windowSize = getWindowSize()

// 对比大小,取大值

var pageWidth = documentSize.x >windowSize.x ? documentSize.x : windowSize.x

var pageHeight = documentSize.y >windowSize.y ? documentSize.y : windowSize.y

// 底层DIV(用于遮挡其他元素)

var mask = document.createElement("div")

mask.id = "login_mask"

setStyle(mask, 'left', 0)

setStyle(mask, 'top', 0)

setStyle(mask, 'background', '#000000')

setStyle(mask, 'width', pageWidth+'px')

setStyle(mask, 'height', pageHeight+'px')

setStyle(mask, 'position', 'absolute')

setStyle(mask, 'filter', 'Alpha(opacity=40)')

setStyle(mask, '-moz-opacity', '0.4')

setStyle(mask, 'opacity', '0.4')

setStyle(mask, 'zIndex', 100)

// 底层ifreme(用于挡住select下拉框等普通DIV无法遮挡的元素)

var iframe = document.createElement("iframe")

iframe.id = "login_iframe"

setStyle(iframe, 'left', 0)

setStyle(iframe, 'top', 0)

setStyle(iframe, 'background', '#000000')

setStyle(iframe, 'width', pageWidth+'px')

setStyle(iframe, 'height', pageHeight+'px')

setStyle(iframe, 'position', 'absolute')

setStyle(iframe, 'filter', 'Alpha(opacity=0)')

setStyle(iframe, '-moz-opacity', '0')

setStyle(iframe, 'opacity', '0')

setStyle(iframe, 'zIndex', 99)

document.body.appendChild(iframe)

document.body.appendChild(mask)

// 弹出DIV

var popDiv = document.createElement("div")

var popTop = 100

var popLeft = 100

setStyle(popDiv, 'left', '100px')

setStyle(popDiv, 'top', '200px')

setStyle(popDiv, 'width', '300px')

setStyle(popDiv, 'height', '200px')

setStyle(popDiv, 'background', '#FFF')

setStyle(popDiv, 'zIndex', 1000)

setStyle(popDiv, 'display', 'block')

setStyle(popDiv, 'position', 'absolute')

document.body.appendChild(popDiv)

}

function getWindowSize() {

var client = {

x:0,

y:0

}

if(typeof document.compatMode != 'undefined' &&document.compatMode == 'CSS1Compat') {

client.x = document.documentElement.clientWidth

client.y = document.documentElement.clientHeight

} else if (typeof document.body != 'undefined') {

client.x = document.body.clientWidth

client.y = document.body.clientHeight

}

return client

}

function getDocumentSize() {

var doc = {

x:0,

y:0

}

doc.x = document.body.scrollWidth

doc.y = document.body.scrollHeight

return doc

}

function setStyle(element, key, value) {

element.style[key] = value

}

</script>

<body onload="init()">

使用css创建:

将这个需要覆盖全部页面的半透明容器相对与文档绝对定位,然后设置其宽度高度均为均为100%即可,缺点是容器总是覆盖当前状态下浏览器视口的面积,如果此时调整浏览器宽度或高度为更大值则出现非覆盖区。

JavaScript创建:

先用css进行透明层定位,同上.然后使用bom语句获取当前视口的宽度和高度然后将获取的值分别付给半透明容器的宽度和高度,并创建一个onresize事件函数,一旦用户改变浏览器窗口大小则从新读取这些值,这样即可保证任何情况下均能完全覆盖