首先我們來了解下什么是瀏覽器hack,瀏覽器hack也有人叫做CSS hack。在Internet Explorer 6,Internet Explorer 7,360.,Mozilla Firefox等不同的瀏覽器下,對CSS解析的優先級不一樣,也就是不同的瀏覽器對css的認識不一樣,因此會導致生成的頁面效果不一樣,得不到我們所 需要的頁面效果,或者效果有很大的差異。 這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能夠同時兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。
我們 知道了什么是hack,還得知道css hack的原理是什么,這樣也有利於后面css hack編寫過程。其實就是上面所提到的,由於不同的瀏覽器對CSS的支持及解析結果不一樣,還由於CSS中的優先級的關系,來書寫css hack,這對於認識不同瀏覽器的解析特性和解析優先級的了解,來寫css hack代碼就至關重要了。
下面我們就將瀏覽器支持的不同符號總結:
注:Ie6支持下划線,例如:_select.
有了上面瀏覽器支持的符號,離寫出滿意的css hack距離還很遙遠,下面我在總結下,在處理css hack方面的一些技巧積累。
1. div的垂直居中問題
{marding:0 auto;padding:0 auto}
2. div浮動ie文本產生3像素的bug
左邊對象浮動,右邊采用外 的左邊距來定位,右邊對象內的文本會離左邊有3px的間距。
第一種方法是不讓重復的內容放入一個div中。
第二種是,如何重復的最后一行是li就加上
- hidden
如果是div就換成
4. ie6。ie7下背景重復問題
在相應的屬性中加入:font-size:0px就可以。
5. Form標簽
這個標簽在ie中,會自動marging一些邊距,而在ff中marging則是0,因此,如果想顯示一直,可以{padding:0px;marging:0px}
技巧的總結是經驗的積累,也是一個漫長的過程,下面我對hack的管理分享:
1. 如果沒有必要,不要使用
使用了hack后會帶來后期很大的維護成本,個人覺得要是小於10px的差距,就沒有必要去使用hack技術。
2. 充分了解css和css hack技術
要想寫出比較完美的代碼,必須充分了解css技術。
3. 經常注釋
在XHTML中注釋是個很好的習慣,不然代碼亂成一團,到了后來就奔上不知道代碼的邏輯性,沒有重用性,閱讀性和可維護性,二次開發性。
IE Hack
IE系列瀏覽器的hack大略如下:
- _nowamagic:1px;-----------ie6
- *nowamagic:1px;-----------ie7
- nowamagic:1px\0;----------ie89
- nowamagic:1px\9\0;--------ie9
- :root nowamagic:1px; ----ie9(實際情況可能ie9還是有問題,再用這種方式)
這樣就基本上就可以兼容所有IE。
其中粉紅色部分為屬性hack,黃色部分為選擇器hack,它們可以結合使用。此外Firefox和Chrome也有它們專有的hack,詳細hack方式及使用示例如下:
Firefox 與 Chrome 的 Hack
Firefox:
1 |
@-moz-document url-prefix() /*寫在選擇器外層時(只可寫在此處):Firefox only*/ |
Chrome:
1 |
@media screen and (-webkit-min-device-pixel-ratio:0) /*寫在選擇器外層時(只可寫在此處):Chrome only*/ |
使用示例:
1 |
@-moz-document url-prefix() /*Firefox*/ |
2 |
{ |
3 |
body |
4 |
{ |
5 |
background-color:pink; |
6 |
} |
7 |
} |
瀏覽器對css的解析是從前到后的,並且采用最后一個樣式聲明。
