上週給你們轉載了《Div+css瀏覽器兼容實例分析(一)》,今天繼續給你們轉載《div+css瀏覽器兼容實例二:css hack的理解》。css
先來講一下什麼是css hack ,寫了這麼久的div+css代碼,我還真不知道這個hack是什麼?上網仔細查了一下。簡單的說針對不一樣的瀏覽器寫不一樣的CSS code的過程,就叫CSS hack,也叫寫CSS hack。html
Css hack
的原理:
因爲不一樣的瀏覽器對
CSS
的支持及解析結果不同,還因爲
CSS
中的優先級的關係。咱們就能夠根據這個來針對不一樣的瀏覽器來寫不一樣的
CSS
。
好比
IE6
能識別下劃線
"_"
和星號
" * "
,
IE7
能識別星號
" * "
,但不能識別下劃線
"_"
,而
firefox
兩個都不能認識。等等
書寫順序,通常是將識別能力強的瀏覽器的
CSS
寫在後面
瀏覽器優先級別
:FF < IE7 < IE6 , CSS hack
書寫順序通常爲
FF IE7 IE6
來看下面div+css瀏覽器兼容的例子:
#demo {width:100px;} /*
被
FIREFOX,IE6,IE7
執行
.*/
* html #demo {width:120px;} /*
會被
IE6
執行
,
以前的定義會被後來的覆蓋
,
因此
#demo
的寬度在
IE6
就爲
120px; */
*+html #demo {width:130px;} /*
會被
IE7
執行
*/
因此最後
,#demo
的寬度在三個瀏覽器的解釋爲
:
firefox:100px;
ie6:120px;
ie7:130px;
Div+css
瀏覽器的兼容
技巧:
① 垂直居中.將 line-height 設置爲 當前 div 相同的高度, 再經過 vertical-align: middle.( 注意內容不要換行.)
② 水平居中. margin: 0 auto;(固然不是萬能)
③ 若需給 a 標籤內內容加上 樣式, 須要設置 display: block;(常見於導航標籤)
④ FF 和 IE 對 BOX 理解的差別致使相差 2px 的還有設爲 float的div在ie下 margin加倍等問題.
⑤ ul 標籤在 FF 下面默認有 list-style 和 padding . 最好事先聲明, 以免沒必要要的麻煩. (常見於導航標籤和內容列表)
⑥ 做爲外部 wrapper 的 div 不要定死高度, 最好還加上 overflow: hidden.以達到高度自適應.
⑦ 關於手形光標. cursor: pointer. 而hand 只適用於 IE.
⑧ FF下給 div 設置 padding 後會致使 width 和 height 增長, 但IE不會.(可用!important解決)
注:針對firefox IE6 IE7的css樣式
如今大部分都是用!important來hack,對於IE6和firefox測試能夠正常顯示,
可是IE7 !important能夠正確解釋,會致使頁面沒按要求顯示!找到一個針
對IE7不錯的hack方式就是使用「*+html」,如今用IE7瀏覽一下,應該沒有問題了。
如今寫一個
瀏覽器兼容的
CSS樣式:
#cshk{ height:20px; } /* Moz */
* html #cshk {height:50px; } /* IE6 */
*+html #cshk {height:80px; } /* IE7 */
那麼在firefox下高度爲20,IE6下的高度爲50,IE7下的高度爲80。
給你們一點意見:能不用
CSS Hack仍是不用的好。其實在設計網站的時候,若是能考慮到一些可能出現CSS bug的地方,是最好的,我設計網站的時候都儘可能避免CSS bug.通常高手都不用hack.