淺談CSS hack(瀏覽器安全色)

來源:互聯網
上載者:User

標籤:

今天簡單寫一點關於瀏覽器安全色的處理方法,雖然百度上已經有很多,但是我還是要寫!

先看一個圖

這個圖描述了2016年1月至8月網民們所使用的瀏覽器市場份額(來源:http://tongji.baidu.com/data/browser)。令我感到欣慰的是chrome排第一,chrome一直以來對W3C標準都支援得比較友好,但是圖中也反映了使用IE系列的人數也不少,所以我們日常做前端開發的時候還要考慮他們的感受。

以下是本文:

  我的前任公司做前端的時候,要求相容IE8及以上,Google,Firefox三座大山。因為是用的表格版面配置(有一定曆史了~),所以日常開發以及維護的時候一般也沒什麼太大的相容問題要處理。現在Google和Firefox對W3C標準支援得比較好,特別是最新的版本。現在Firefox最新版本是49.0.1.6109,chrome最新版本53.0.2785.116 。寫過幾個HTML5+CSS3的小頁面(3D魔方動畫、簡筆畫+動畫),支援的都很好。某些CSS3屬性不支援直接加首碼 -webkit- 、 -moz- 、-o-、-ms- 即可解決。

 

一句話總結: 各大瀏覽器最新版幾乎都支援W3C標準,但日常開發用到CSS3屬性的時候建議加上首碼,以向前相容老版本的瀏覽器。

栗子:

transform-style: preserve-3d;        /*W3C標準*/

-webkit-transform-style: preserve-3d;   /*chrome safari*/

-moz-transform-style: preserve-3d;      /*firefox*/

-0-transform-style: preserve-3d;          /*opera*/

 

說完簡單的來說點不是很複雜的。

IE系列中,IE9及以上對HTML5支援都不錯了。但是IE678還是有很大的問題,主要就是不支援HTML5的新標籤。

(HTML5加了什麼新標籤?新標籤有什麼作用?請看https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document)

這個問題我認為比較好的解決方案就是html5shiv.js(什嗎?你說還有更好的解決方案?請不吝告知,萬分感謝)

這個檔案有興趣的可以看看,主要是建立了html5的新標籤(栗 article nav等),然後將這些標籤設為區塊層級元素。

對於小白來說,使用非常簡單,在頁面的head中添加下面的代碼

<!--[if lt IE 9]>    <script src="js/html5shiv.js"></script>    <![endif]-->

當瀏覽器是IE且版本小於IE9的時候,就使用這個js檔案,解決不相容html5的問題。

但是在開發過程中,解決這些往往不夠,特別是IE 6 7 還有一些內容是會產生不相容。

栗子:

我們平時寫導覽列的時候,可能會用到display: inline-block;但是用完以後發現IE6 7 不支援inline-block這個屬性。

那我只好在代碼中添加+display: inline; 然後再用+zoom:1做縮放。

雖然和inline-block還是有點不一致的地方,但是整體來說還是可以的。

這個首碼+只能被IE 67識別,其他版本瀏覽器都不會識別這句CSS代碼。

display: inline-block;
+display: inline; /*for IE6、7*/

還有其他首碼,例如 IE6專屬首碼“-”   -display:inline;

首碼"*"  *display:inline; /*IE6 7*/

 除了添加首碼,還可以用條件注釋hack

栗子:

<!--[if IE 6]> 僅IE6可識別
  您的代碼<![endif]--><!--[if lt IE 9]> IE9以下版本可識別
  您的代碼<![endif]-->

 

IE6還有特別多的BUG,比如著名的3px等,IE67是挺麻煩的,但是現在(2016.9.28)很多公司都不再要求完全相容IE6 7,所以這裡也不詳細說,有首碼hack和條件注釋hack我認為就夠用了。大家有興趣可以下載IEtest或者在IE11中調出相容模式,用IE各種版本看看一些頁面內容豐富的大網站有什麼區別。

說完IE 6 7 最後再囉嗦囉嗦IE 8 

IE8一般情況下是沒什麼相容問題,但是IE8沒有專屬的首碼hack,如果出現問題我會用首碼hack來篩選,

(你說條件注釋hack可以嗎?當然可以)

看看栗子

栗子:

.div{
   width: 100px;
height: 100px;
background:green\0; /* IE 8 9 10專屬*/ background:red\0\9; /*IE 9 10專屬*/ background:red; /*W3C標準*/}

這個栗子裡用首碼hack選擇, 除了IE8中DIV顯示背景顏色是綠色,IE9 10和其他瀏覽器都是紅色。

如果您還有更好更便捷的方法,請不吝告知,萬分感謝。

IE9及以上幾乎都沒有太大的問題。這裡就不囉嗦了。以後工作中發現了再來補充。

最後總結,日常開發中很少會用到IE hack,寫這篇部落格也是為以後以防不測~

如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知 ending~

淺談CSS hack(瀏覽器安全色)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.