css hack轉載來自百度知道

什麼是CSS hack(http://www.cssplay.org.cn/css-hack/index.html)由於不同的瀏覽器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,對CSS的解析認識不一樣,因此會導致生成的頁面效果不一樣,得不到我們所需要的頁面效果。
  這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能夠同時兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。
  這個針對不同的瀏覽器寫不同的CSS code的過程,就叫CSS hack,也叫寫CSS hack。
  CSS Hack的原理是什麼
  由於不同的瀏覽器對CSS的支持及解析結果不一樣,還由於CSS中的優先級的關係。我們就可以根據這個來針對不同的瀏覽器來寫不同的CSS。
  比如 IE6能識別下劃線"_"和星號" * ",IE7能識別星號" * ",但不能識別下劃線"_",而firefox兩個都不能認識。等等
  書寫順序,一般是將識別能力強的瀏覽器的CSS寫在後面。下面如何寫裏面說得更詳細些。
  如何寫CSS Hack
  比如要分辨IE6和firefox兩種瀏覽器,可以這樣寫:
  <style>
  div{
  background:green; /* for firefox */
  *background:red; /* for IE6 */
  }
  </style>
  我在IE6中看到是紅色的,在firefox中看到是綠色的。
  解釋一下:
  上面的css在firefox中,它是認識不了後面的那個帶星號的東東是什麼的,於是將它過濾掉,不予理睬,解析得到的結果是:div{background:green},於是理所當然這個div的背景是綠色的。
  在IE6中呢,它兩個background都能識別出來,它解析得到的結果是:div{background:green;background:red;},於是根據優先級別,處在後面的red的優先級高,於是當然這個div的背景顏色就是紅色的了。
  CSS hack:區分IE6,IE7,firefox
  區別不同瀏覽器,CSS hack寫法:
  區別IE6與FF:
  background:orange;*background:blue;
  區別IE6與IE7:
  background:green !important;background:blue;
  區別IE7與FF:
  background:orange; *background:green;
  區別FF,IE7,IE6:
  background:orange;*background:green;_background:blue;
  background:orange;*background:green !important;*background:blue;
  注:IE都能識別*;標準瀏覽器(如FF)不能識別*;
  IE6能識別*,但不能識別 !important,
  IE7能識別*,也能識別!important;
  FF不能識別*,但能識別!important;
  IE6 IE7 FF
  * √ √ ×
  !important × √ √
  瀏覽器優先級別:FF<IE7<IE6,CSS hack書寫順序一般爲FF IE7 IE6
  以: " #demo {width:100px;} "爲例;
  #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;
  
  http://www.1987y.org
  詳細的CSS資料參考
  http://www.cssplay.org.cn/
  玩轉CSS - CSSPLAY中文官方網站
  一個致力於中國CSS技術的公益組織
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章