以!important的CSS定義兼容不同瀏覽器
CSS定義對于不同瀏覽器的兼容性問題一直比較困惑。不管是用div+CSS還是table來進行頁面設計,我對WEB重建的理解是:速度與兼容性。即要盡可能提高瀏覽者訪問頁面時瀏覽的速度、要使頁面能盡可能兼容不同來訪瀏覽器的瀏覽效果。所以近期的設計都是打開幾個不同的瀏覽器進行測試,如IE、GoSuRF Browser、Opera和Firefox瀏覽器。測試結果表明,IE和GoSuRF Browser對CSS的支持最好,Opera其次,Firefox要求最高。
先看下面的效果:
以下圖片是在IE瀏覽器、GoSuRF Browser瀏覽器和Opera瀏覽器中看到的效果:
在Mozilla Firefox瀏覽器中看到的效果:
其中在IE和GoSuRF Browser瀏覽器瀏覽時的效果基本沒差別,居中正常;Opera瀏覽器中對于這里居中效果也正常(但對于頁面其他地方就有些問題,這在后面再研究);在Mozilla Firefox瀏覽器中看到的效果就不同了,居中是對的,但是二邊都沒對齊,抓圖仔細查看了下,二邊多出了5個像素的寬度,并且里面的縮進量都有問題。
先看看CSS中對于中間區域的定義:
#mainall { width: 760px; height: 300px; padding: 5px; margin: 0 auto; background: #fff; } |
可能是padding: 5px;這個縮進量Firefox不支持,先測試將“padding: 5px;”改成“padding: 0px;”,保存后瀏覽,二邊多出了5個像素的寬度就不見了。就是它了。在CSS中再加一句:“padding: 0px !important; ”:
#mainall { width: 760px; height: 300px; padding: 0px !important; padding: 5px; margin: 0 auto; background: #fff; } |
首先二邊對齊的問題解決了。但是右側的div內容卻被擠到下面去了。很可能是寬度不夠的緣故。再看下左右二個div的定義:
/*===中部左側定義開始===*/ #mainbox { padding:10px; float: left; width: 495px; background: #fff; } /*===中部右側定義開始===*/ #rightbox { float: right; padding: 5px; width: 250px; height: 100%; background: #F6F7F9; } |
應該是這個狐貍(Firefox)將padding這個補丁邊距的縮進量,不但是只具有縮進效果,并且還讓瀏覽器解析成:整個box的寬度為width+padding了!暈哦,找到這個原因,解決起來方便些了:將整個box的寬度在Firefox中應該計算為(width-padding)。讓!important來做這個工作吧:
/*===中部左側定義開始===*/ #mainbox { padding: 0px !important; /****兼容Firefox瀏覽器*****/ padding:10px; float: left; width: 495px; background: #fff; } /*===中部右側定義開始===*/ #rightbox { float: right; padding: 5px; width: 250px; height: 100%; background: #F6F7F9; } |
再次瀏覽,終于左側上去了,哈哈,應該就是這個問題啦。但是問題又來了,右側怎么灰色的標題欄到邊界外面去了?
再看CSS定義:
#rightbox dt { padding: 3px !important; /****兼容Firefox瀏覽器*****/ padding: 3px; margin: 0px; border: 0px; width: 100%; font-weight: normal; font-family:宋體; font-size: 12px; color: #fff; background: #A6A9AE; text-align: left; } #rightbox dd { padding: 5px !important; /****兼容Firefox瀏覽器*****/ padding: 10px; margin: 0px; border: 0px; text-align: left; width: 100%; font-weight: normal; font-family:宋體; font-size: 12px; line-height: 24px; } |
這里設置了標題#rightbox dt的寬度為100%,測試一下,去掉這個定義就顯示正常了,用相同的手法處理下,加上個定義“width: !important;”,讓Firefox先認識這個定義而丟棄width: 100%的定義即可:
#rightbox dt { padding: 3px !important; /****兼容Firefox瀏覽器*****/ padding: 3px; margin: 0px; border: 0px; width: !important; /****兼容Firefox瀏覽器*****/ width: 100%; font-weight: normal; font-family:宋體; font-size: 12px; color: #fff; background: #A6A9AE; text-align: left; } #rightbox dd { padding: 5px !important; /****兼容Firefox瀏覽器*****/ padding: 10px; margin: 0px; border: 0px; text-align: left; width: !important; /****兼容Firefox瀏覽器*****/ width: 100%; font-weight: normal; font-family:宋體; font-size: 12px; line-height: 24px; } |
瀏覽下效果,正常了!
調整前的效果 用width: !important后的效果
查看Firefox的Iavascript控制臺,可看到以下一些提示,說明用CSS中用 !important提升指定樣式規則的應用優先權后,Opera和Firefox中會優先執行并丟棄后面相同的定義:
Firefox的Iavascript控制臺提示信息: 錯誤: 預期為 ’:’ 但卻得到 ’padding’。 聲明被丟棄。 源文件: 行:71 …… 錯誤: 預期為 ’:’ 但卻得到 ’width’。 聲明被丟棄。 源文件: 行:212 |
用戶登錄
還沒有賬號?
立即注冊