搖擺不定的寬度
我們反對為元素指定邊框,內補丁的理由就是實際寬度會隨著使用者瀏覽器的不同而不同,就算在今天,幾百萬使用IE5.x的用戶還是會看到明顯偏差的設計結果.同時有個重點必須記住:在這段文字撰寫的時候,仍然有太多人在使用IE5以致我們不能忽視這個問題.
所以該怎么辦?恩,幸運的是,有個能修復這個問題的技巧,這個技巧可以提供兩種不同的寬度,一種給IE5 for Windows,另一種給其他瀏覽器以便得到正確的盒模型.
盒模型Hack
親切的Tantek Celik寫了盒模型Hack (http://www.tantek.com/CSS/Examples/boxmodelhack.html) 讓我們能提供兩種不同寬度:一種調整過,只會被Window Internet Explorer 5使用,另一種則給其他所有瀏覽器使用.
通過IE5和IE5.5才有的CSS解析Bugs,可以指定一個略大的寬度(容納邊框和內補丁),然后以實際的寬度覆蓋這個數(shù)值,讓其他瀏覽器能顯示出正確的結果.
源代碼示例
舉例來說,如果希望把側邊欄的內容區(qū)域寬度設為200像素寬,加上10像素內補丁和5像素邊框,那么我們的CSS看起來就像:
#sidebar { width: 200px; padding: 10px; border: 5px solid black; }
對IE5 for Windows來說,則需要把寬度指定為230像素(加上兩側內補丁和邊框的寬度),接著再以200像素覆蓋回來,讓符合標準的瀏覽器得到正確的寬度.
#sidebar { padding: 10px; border: 5px solid black; width: 230px; /* for IE5/Win */ voice-family: "\"}\""; voice-family: inherit; width: 200px; /* actual value */ }
留意IE5 for Windows的值先出現(xiàn),接著幾條讓IE5 for Windows認為聲明已經(jīng)結束的規(guī)則,在此我們使用voice-family屬性,原因單純只是瀏覽器認得它的話也不會改變視覺效果,最后指定實際的寬度,覆蓋最初的width規(guī)則,第二個width規(guī)則會被IE5 for Windows忽略.
結果在IE5 for Windows以及其他所有兼容CSS2的瀏覽器上看起來應該完全相同.沒有使用這個hack的話,IE5 for Windows的使用者就會看到比設計還瘦的欄寬.
對Opera友好
對于同樣擁有IE5 for Windows解析錯誤的CSS2兼容瀏覽器來說,我們必須在每次使用盒模型補丁之后加上一段額外的聲明,這個稱為"對Opera友好"的規(guī)則會讓所有符合標準的瀏覽器不被解析Bug卡住,確保他們能顯示出期望中的寬度.
#sidebar { padding: 10px; border: 5px solid black; width: 230px; /* for IE5/Win */ voice-family: "\"}\""; voice-family: inherit; width: 200px; /* actual value */ } html>body #sidebar { width: 200px; }
有了這段規(guī)則,就可以完全繞過IE5 for Windows錯誤解析CSS盒模型的問題,讓所有人都能看到正確的效果.
出處:藍色理想
責任編輯:bluehearts
上一頁 標記語言——CSS布局 [7] 下一頁 標記語言——CSS布局 [9]
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|