前不久有個正要畢業(yè)的網(wǎng)友給我發(fā)郵件,他畢業(yè)設計需要實現(xiàn)鎖屏的效果,但是他沒有能看懂我之前發(fā)布的對話框源碼,他問能不能把鎖屏相關代碼說明下,我當時說過兩天就發(fā)。由于最近比較忙,我現(xiàn)在才想起來,但愿現(xiàn)在此文還來得及。
步入正題:
現(xiàn)在全屏的半透明遮罩層在web2.0網(wǎng)站應用非常廣泛了,絕大多數(shù)遮罩是通過計算頁面大小,然后覆蓋一個與頁面同等大小的層實現(xiàn),如騰訊qzone, wordpress后臺。這種方式本來無可非議,但是在頁面很長的時候在IE8下會失效(國外資料的解釋是與機器顯卡相關),有些完美情節(jié)的同學遇到這個問題后就抓破了頭,無奈之下甚至想讓IE8強制使用IE7的方式解析他的作品。其實我們有一個更好的方法,咱們用CSS去解決它!
還記得“position:fixed”嗎?它是css2的一個新增的屬性,他可以讓一個元素靜止在頁面上,拖動滾動條也不會動,如Qzone頂部固定的導航欄就是這樣實現(xiàn)的。同樣我們也可以用一個100%高寬的層覆蓋瀏覽器視口,這樣就可以實現(xiàn)全屏遮罩了,不用再計算頁面的大小,調(diào)整瀏覽器大小的時候也不要去動態(tài)修改尺寸了。
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
可是有一個頭疼的問題,IE6不支持“position:fixed”,咱們只能通過js動態(tài)的修改它的TOP值以模擬靜止定位,拖動滾動條的時候遮罩成肯定會抖動,因為每改變一次IE會重新渲染一次。但是微軟卻給我們提供了一個非常有趣的特性,如果給html或者body標簽設置一個靜止定位的背景圖片,層在拖動滾動條的時候就不會抖動了,幾乎完美的模擬了“position:fixed”。我在實際項目中發(fā)現(xiàn)這個特性他還能觸發(fā)其他的特異功能,以后再說明。
為了省事,咱們針對IE6用萬惡expression在CSS中寫點腳本,拖動滾動條的時候重新定位我們的遮罩層。傳說中expression是非常耗性能的,可是咱們的expression幾乎沒有損耗,有興趣的同學可以深入研究下expression。
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
好了,兼容IE6這個大頭娃娃后,咱們的鎖屏遮罩已經(jīng)通殺主流瀏覽器了,但是呢用js寫效果的同學們總是非常的蛋疼,總想折騰點什么來,咱們就再添加一點腳本,讓鎖屏的時候后可以中斷用戶操作,把滾動條、滾輪、tab鍵、全選、刷新、右鍵統(tǒng)統(tǒng)禁止掉,模擬真正的‘鎖屏’:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
原文:http://www.planeart.cn/?p=792
經(jīng)典論壇交流:http://bbs.blueidea.com/thread-2986037-1-1.html
本文鏈接:http://m.95time.cn/tech/web/2010/7665.asp
出處:藍色理想
責任編輯:bluehearts
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|