lightBox 簡易的全屏透明遮罩解決方法
更新時間:2010年06月04日 16:14:20 作者:
現(xiàn)在全屏的半透明遮罩層在web2.0網(wǎng)站應(yīng)用非常廣泛了,絕大多數(shù)遮罩是通過計算頁面大小,然后覆蓋一個與頁面同等大小的層實(shí)現(xiàn),如騰訊qzone, wordpress后臺。
步入正題:
現(xiàn)在全屏的半透明遮罩層在web2.0網(wǎng)站應(yīng)用非常廣泛了,絕大多數(shù)遮罩是通過計算頁面大小,然后覆蓋一個與頁面同等大小的層實(shí)現(xiàn),如騰訊qzone, wordpress后臺。這種方式本來無可非議,但是在頁面很長的時候在IE8下會失效(國外資料的解釋是與機(jī)器顯卡相關(guān)),有些完美情節(jié)的同學(xué)遇到這個問題后就抓破了頭,無奈之下甚至想讓IE8強(qiáng)制使用IE7的方式解析他的作品。其實(shí)我們有一個更好的方法,咱們用CSS去解決它!
還記得“position:fixed”嗎?它是css2的一個新增的屬性,他可以讓一個元素靜止在頁面上,拖動滾動條也不會動,如Qzone頂部固定的導(dǎo)航欄就是這樣實(shí)現(xiàn)的。同樣我們也可以用一個100%高寬的層覆蓋瀏覽器視口,這樣就可以實(shí)現(xiàn)全屏遮罩了。不用再計算頁面的大小,調(diào)整瀏覽器大小的時候也不要去動態(tài)修改尺寸了。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
可是有一個頭疼的問題,IE6不支持“position:fixed”,咱們只能通過js動態(tài)的修改它的TOP值以模擬靜止定位,拖動滾動條的時候遮罩成肯定會抖動,因為每改變一次IE會重新渲染一次。但是微軟卻給我們提供了一個非常有趣的特性,如果給html或者body標(biāo)簽設(shè)置一個靜止定位的背景圖片,層在拖動滾動條的時候就不會抖動了,幾乎完美的模擬了“position:fixed”。我在實(shí)際項目中發(fā)現(xiàn)這個特性他還能觸發(fā)其他的特異功能,以后再說明。
為了省事,咱們針對IE6用萬惡expression在CSS中寫點(diǎn)腳本,拖動滾動條的時候重新定位我們的遮罩層。傳說中expression是非常耗性能的,可是咱們的expression幾乎沒有損耗,有興趣的同學(xué)可以深入研究下expression。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
好了,兼容IE6這個大頭娃娃后,咱們的鎖屏遮罩已經(jīng)通殺主流瀏覽器了,但是呢用js寫效果的同學(xué)們總是非常的蛋疼,總想折騰點(diǎn)什么來,咱們就再添加一點(diǎn)腳本,讓鎖屏的時候后可以中斷用戶操作,把滾動條、滾輪、tab鍵、全選、刷新、右鍵統(tǒng)統(tǒng)禁止掉,模擬真正的‘鎖屏':
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
現(xiàn)在全屏的半透明遮罩層在web2.0網(wǎng)站應(yīng)用非常廣泛了,絕大多數(shù)遮罩是通過計算頁面大小,然后覆蓋一個與頁面同等大小的層實(shí)現(xiàn),如騰訊qzone, wordpress后臺。這種方式本來無可非議,但是在頁面很長的時候在IE8下會失效(國外資料的解釋是與機(jī)器顯卡相關(guān)),有些完美情節(jié)的同學(xué)遇到這個問題后就抓破了頭,無奈之下甚至想讓IE8強(qiáng)制使用IE7的方式解析他的作品。其實(shí)我們有一個更好的方法,咱們用CSS去解決它!
還記得“position:fixed”嗎?它是css2的一個新增的屬性,他可以讓一個元素靜止在頁面上,拖動滾動條也不會動,如Qzone頂部固定的導(dǎo)航欄就是這樣實(shí)現(xiàn)的。同樣我們也可以用一個100%高寬的層覆蓋瀏覽器視口,這樣就可以實(shí)現(xiàn)全屏遮罩了。不用再計算頁面的大小,調(diào)整瀏覽器大小的時候也不要去動態(tài)修改尺寸了。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
可是有一個頭疼的問題,IE6不支持“position:fixed”,咱們只能通過js動態(tài)的修改它的TOP值以模擬靜止定位,拖動滾動條的時候遮罩成肯定會抖動,因為每改變一次IE會重新渲染一次。但是微軟卻給我們提供了一個非常有趣的特性,如果給html或者body標(biāo)簽設(shè)置一個靜止定位的背景圖片,層在拖動滾動條的時候就不會抖動了,幾乎完美的模擬了“position:fixed”。我在實(shí)際項目中發(fā)現(xiàn)這個特性他還能觸發(fā)其他的特異功能,以后再說明。
為了省事,咱們針對IE6用萬惡expression在CSS中寫點(diǎn)腳本,拖動滾動條的時候重新定位我們的遮罩層。傳說中expression是非常耗性能的,可是咱們的expression幾乎沒有損耗,有興趣的同學(xué)可以深入研究下expression。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
好了,兼容IE6這個大頭娃娃后,咱們的鎖屏遮罩已經(jīng)通殺主流瀏覽器了,但是呢用js寫效果的同學(xué)們總是非常的蛋疼,總想折騰點(diǎn)什么來,咱們就再添加一點(diǎn)腳本,讓鎖屏的時候后可以中斷用戶操作,把滾動條、滾輪、tab鍵、全選、刷新、右鍵統(tǒng)統(tǒng)禁止掉,模擬真正的‘鎖屏':
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
相關(guān)文章
利用JavaScript在網(wǎng)頁實(shí)現(xiàn)八數(shù)碼啟發(fā)式A*算法動畫效果
這篇文章主要介紹了利用JavaScript在網(wǎng)頁實(shí)現(xiàn)八數(shù)碼啟發(fā)式A*算法動畫效果,需要的朋友可以參考下2017-04-04electron實(shí)現(xiàn)qq快捷登錄的方法示例
這篇文章主要介紹了electron實(shí)現(xiàn)qq快捷登錄的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10js 數(shù)值轉(zhuǎn)換為3位逗號分隔的示例代碼
本篇文章主要是對js將數(shù)值轉(zhuǎn)換為3位逗號分隔的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02uni-app網(wǎng)絡(luò)請求、數(shù)據(jù)緩存實(shí)例詳解
這篇文章主要介紹了uni-app網(wǎng)絡(luò)請求、數(shù)據(jù)緩存的相關(guān)知識,本文通過實(shí)例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11JS?限時限次數(shù)點(diǎn)擊按鈕的實(shí)現(xiàn)思路
這篇文章主要介紹了JS?限時限次數(shù)點(diǎn)擊按鈕,實(shí)現(xiàn)方法很簡單需要用一個變量作為計數(shù),點(diǎn)擊一次,計數(shù)加一點(diǎn)擊函數(shù)內(nèi)判斷計數(shù)變量設(shè)置定時恢復(fù),對實(shí)例代碼感興趣的朋友一起看看吧2022-03-03使用javascript實(shí)現(xiàn)json數(shù)據(jù)以csv格式下載
這篇文章主要介紹了使用javascript實(shí)現(xiàn)json數(shù)據(jù)以csv格式下載,需要的朋友可以參考下2015-01-01