目錄
目錄X

以!important的CSS定義兼容不同瀏覽器

  CSS定義對于不同瀏覽器的兼容性問題一直比較困惑。不管是用div+CSS還是table來進行頁面設計,我對WEB重建的理解是:速度與兼容性。即要盡可能提高瀏覽者訪問頁面時瀏覽的速度、要使頁面能盡可能兼容不同來訪瀏覽器的瀏覽效果。所以近期的設計都是打開幾個不同的瀏覽器進行測試,如IE、GoSuRF Browser、Opera和Firefox瀏覽器。測試結果表明,IE和GoSuRF Browser對CSS的支持最好,Opera其次,F(xiàn)irefox要求最高。

  先看下面的效果:

  以下圖片是在IE瀏覽器、GoSuRF Browser瀏覽器和Opera瀏覽器中看到的效果:

  在Mozilla Firefox瀏覽器中看到的效果:

  其中在IE和GoSuRF Browser瀏覽器瀏覽時的效果基本沒差別,居中正常;Opera瀏覽器中對于這里居中效果也正常(但對于頁面其他地方就有些問題,這在后面再研究);在Mozilla Firefox瀏覽器中看到的效果就不同了,居中是對的,但是二邊都沒對齊,抓圖仔細查看了下,二邊多出了5個像素的寬度,并且里面的縮進量都有問題。

  先看看CSS中對于中間區(qū)域的定義:

#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;
}
  !important的作用是提升指定樣式規(guī)則的應用優(yōu)先權,但IE不支持的值,CSS中即使定義了IE也會忽略這它而選擇按后面的定義執(zhí)行并顯示,而Opera和Firefox卻會按!important指出的規(guī)則優(yōu)先顯示。看下瀏覽效果:

  首先二邊對齊的問題解決了。但是右側的div內(nèi)容卻被擠到下面去了。很可能是寬度不夠的緣故。再看下左右二個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;
}

 瀏覽下效果,正常了!

    

調(diào)整前的效果         用width: !important后的效果

  查看Firefox的Iavascript控制臺,可看到以下一些提示,說明用CSS中用 !important提升指定樣式規(guī)則的應用優(yōu)先權后,Opera和Firefox中會優(yōu)先執(zhí)行并丟棄后面相同的定義:

Firefox的Iavascript控制臺提示信息:
錯誤: 預期為 ’:’ 但卻得到 ’padding’。 聲明被丟棄。
源文件:  行:71
……
錯誤: 預期為 ’:’ 但卻得到 ’width’。 聲明被丟棄。
源文件: 行:212

【打印正文】 發(fā)布時間:2006-08-11 09:13:30 瀏覽次數(shù): 作者:雅虎 來源:本站原創(chuàng)
×

用戶登錄