實(shí)現(xiàn)lightBox時(shí)的樣式與行為分離減少JS第1/2頁(yè)
[參與測(cè)試的瀏覽器:IE6 / IE7 / IE8 / FF3.5 / OP9.6 / SF4 / Chrome2 ]
[操作系統(tǒng):Windows]
本教程旨在實(shí)現(xiàn)lightBox時(shí)的樣式與行為分離,減少JS在各方面(全屏遮蔽、ie6中遮蔽select、雙向居中、高度自適應(yīng)內(nèi)容等)的工作。
先上代碼:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="Chomo" />
<link rel="start" title="Home" />
<title>全屏屏蔽、自動(dòng)居中的lightBox</title>
<style type="text/css">
* { margin:0; padding:0; }
html,body { height:100%; overflow:hidden; font:12px/1.5 simsun;}
.myPage { line-height:3; overflow:auto; width:100%; height:100%;}
.lightBox,
.popupCover,
.popupIframe,
.popupComponent { position:absolute; left:0; top:0; width:100%; height:100%;}
.popupComponent { z-index:2; display:none;}
.popupIframe { display:none; _display:block; _filter:alpha(opacity=0);}
.popupCover { background:#000; opacity:0.7; *filter:alpha(opacity=70);}
.lightBox { text-align:center; overflow:auto;}
.lightBoxContent { display:inline-block; *display:inline; zoom:1; width:300px; padding:10px; background:#fff; border:5px solid #00b4ff; vertical-align:middle;}
.lightBoxMaxHeight { display:inline-block; vertical-align:middle; height:100%; *height:99.5%; width:1px; overflow:hidden; margin-left:-1px;}
.lightBoxWrapper { display:inline-block; *display:inline; zoom:1; text-align:left;}
.lightBoxClose { color:#f00;}
.lightBoxSubmit { margin-top:10px; padding-top:5px; border-top:1px solid #ccc;}
.lightBoxSubmit input { font-size:12px; padding:0 10px; overflow:visible; margin:0 5px;}
</style>
</head>
<body>
<div class="popupComponent" id="lightBox">
<iframe class="popupIframe"></iframe>
<div class="popupCover"></div>
<div class="lightBox">
<span class="lightBoxMaxHeight"></span>
<div class="lightBoxContent">
<div class="lightBoxWrapper">
當(dāng)提示小于一行時(shí)文字居中[br]
</div>
<div class="lightBoxSubmit">
<input type="button" value="確定" onclick="hideLayer('lightBox')" />
<input type="button" value="取消" onclick="hideLayer('lightBox')" />
</div>
</div>
</div>
</div>
<div class="popupComponent" id="lightBox2">
<iframe class="popupIframe"></iframe>
<div class="popupCover"></div>
<div class="lightBox">
<div class="lightBoxContent">
<div class="lightBoxWrapper">
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度 當(dāng)內(nèi)容已經(jīng)超過了一屏的高度[br]
</div>
<div class="lightBoxSubmit">
<input type="button" value="確定" onclick="hideLayer('lightBox2')" />
<input type="button" value="取消" onclick="hideLayer('lightBox2')" />
</div>
</div>
<span class="lightBoxMaxHeight"></span>
</div>
</div>
<div class="myPage">
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
<div style="text-align:center;"><input type="button" value="位于第一屏的按鈕" onclick="showLayer('lightBox')" /></div>
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
<select><option>一個(gè)用于測(cè)試IE6中是否能覆蓋住的select</option></select>[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
<select><option>又一個(gè)用于測(cè)試IE6中是否能覆蓋住的select</option></select>[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
<div style="text-align:center;"><input type="button" value="位于第二屏中的按鈕" onclick="showLayer('lightBox')" /><input type="button" value="當(dāng)內(nèi)容已經(jīng)超過了一屏的高度" onclick="showLayer('lightBox2')" /></div>
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
</div>
<script>
function showLayer(id) {
document.getElementById(id).style.display = "block";
}
function hideLayer(id) {
document.getElementById(id).style.display = "none";
}
</script>
</body>
</html>
這個(gè)lightBox具備以下特性,大家可以通過修改代碼測(cè)一測(cè) ^-^:
在頁(yè)面中任意一位置點(diǎn)開,均能完美遮屏(此時(shí)無法直接控制包括滾動(dòng)條在內(nèi)的任意元素),IE6中無須隱藏即能遮蔽select元素(iframe遮蔽法的缺陷:遮蔽后,如果拖動(dòng)滾動(dòng)條,select仍會(huì)移至頂層)。
lightBox的高度自適應(yīng)其內(nèi)容,并呈現(xiàn)完美的居中狀態(tài)。
內(nèi)容為單行時(shí),居中顯示;內(nèi)容為多行時(shí),居左顯示;內(nèi)容高度使lightBox超過屏高時(shí)呈現(xiàn)滾動(dòng)條,并居頂顯示,讀者能完整閱讀。
如有興趣,構(gòu)成這個(gè)lightBox的以下小技巧可供您參詳:
1. 全屏遮蔽的方法:
A. 隱藏html/body的滾動(dòng)條。
B. 用一個(gè)div做遮罩,再用一個(gè)div做帶有滾動(dòng)條的頁(yè)面,一個(gè)疊上面,一個(gè)疊下面。
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="Chomo" />
<link rel="start" title="Home" />
<title>全屏遮蔽的方法</title>
<style type="text/css">
* {
margin:0; padding:0; /*--- 簡(jiǎn)單的css reset,據(jù)說它的效率不高,請(qǐng)自行替換為高效的 ---*/
}
html,body {
height:100%; /*--- 有了這個(gè)高度,IE6下,body的子對(duì)象設(shè)置height:100%才有效 ---*/
overflow:hidden; /*--- 滅掉html或body產(chǎn)生的滾動(dòng)條 ---*/
}
.page {
line-height:3;
overflow:auto; /*--- 滾動(dòng)條就靠它了 ---*/
width:600px; height:400px; background:#f60; /*--- 暫時(shí)先做這么大,方便大家看清楚 ---*/
position:relative; left:50px; top:50px; /*--- 移動(dòng)一點(diǎn)點(diǎn),方便大家看清楚,把它去掉,遮罩的基本的效果就實(shí)現(xiàn)了 ---*/
}
.cover {
position:absolute;
width:600px; height:400px; background:#000;
opacity:0.7; *filter:alpha(opacity=70);
z-index:2;
}
</style>
</head>
<body>
<div class="cover"></div>
<div class="page">
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]假裝很豐富的內(nèi)容[br]
</div>
</body>
</html>
相關(guān)文章
原生js實(shí)現(xiàn)簡(jiǎn)單的模態(tài)框示例
下面小編就為大家?guī)硪黄鷍s實(shí)現(xiàn)簡(jiǎn)單的模態(tài)框示例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(三):鏈表
這篇文章主要介紹了JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(三):鏈表,本文分別講解了單鏈表與雙鏈表以及增加節(jié)和刪除節(jié)的代碼實(shí)例,需要的朋友可以參考下2015-06-06詳解如何優(yōu)雅迭代JavaScript字面對(duì)象
迭代是訪問集合元素的一種方法,可以被迭代的對(duì)象稱為可迭代對(duì)象,下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅迭代JavaScript字面對(duì)象的相關(guān)資料,需要的朋友可以參考下2022-05-05JavaScript中的console.group()函數(shù)詳細(xì)介紹
這篇文章主要介紹了JavaScript中的console.group()函數(shù)詳細(xì)介紹,當(dāng)程序調(diào)試日志過多時(shí)會(huì)有些雜亂,此時(shí)可以使用console.group()函數(shù)調(diào)來分組顯示,需要的朋友可以參考下2014-12-12JavaScript表單通過正則表達(dá)式驗(yàn)證電話號(hào)碼
通過正則表達(dá)式實(shí)現(xiàn)判斷一個(gè)輸入量是否為電話號(hào)碼,需要的朋友可以參考下2014-03-03