關於瀏覽器兼容問題的一些名詞和工具
條件注釋
條件注釋是一種安全的區分IE瀏覽器版本的語法,且被認為是取代針對IE css hack的首選辦法。
- 條件注釋的基本結構和HTML的注釋(<!– –>)是一樣的。因此IE以外的瀏覽器將會把它們看作是普通的注釋而完全忽略它們。
- 條件注釋只能用於IE5以上。
- 如果你安裝了多個IE,條件注釋將會以最高版本的IE為標準。
- IE將會根據if條件來判斷是否如解析普通的頁面內容一樣解析條件注釋里的內容。
<!--[if IE]>用於 IE <![endif]--><!--[if IE 6]>用於 IE6 <![endif]--><!--[if IE 7]>用於 IE7 <![endif]--><!--[if IE 8]>用於 IE8 <![endif]--><!--[if IE 9]>用於 IE9 <![endif]--><!--[if gt IE 6]> 用於 IE6 以上版本<![endif]--><!--[if lte IE 7]> 用於 IE7或更低版本 <![endif]--><!--[if gte IE 8]>用於 IE8 或更高版本 <![endif]--><!--[if lt IE 9]>用於 IE9 以下版本<![endif]--><!--[if !IE]> -->用於非 IE <!-- <![endif]-->
IE hack
hack就是黑客,這裡比喻解決IE問題的一些非官方的非規範的(而又有效流通的)技術手段。
JS 能力檢測
能力檢測的目標不是識別特定的瀏覽器,而是識別瀏覽器的能力。使用這種方式無需顧及瀏覽器如何如何,只需確定瀏覽器是否支持特定的能力,就可以給出相關的方案。
html5shiv.js
一種瀏覽器插件,用於解決IE9以下版本瀏覽器對HTML5新增標籤不識別,並導致CSS不起作用的問題。所以我們在使用過程中,想要讓低版本的瀏覽器,即IE9以下的瀏覽器支持,那麼這款html5shiv.js是一個非常好的選擇。
aFarkas/html5shivrespond.js
響應式布局理想狀態是對PC/移動各種終端進行響應。媒體查詢的支持程度是IE9+以及其他現代的瀏覽器,但是IE8在市場當中仍然佔據了比較大量的市場份額,使我們不得不進行IE低端瀏覽器的考慮。如何在IE6~8瀏覽器中兼容響應式布局呢?這裡我們需要藉助這樣一個文件:respond.js。
Bootstrap裡面就引入了這個js文件。
https://github.com/scottjehl/RespondCSS Reset
只要存在使用不同瀏覽器的可能,那你就不得不從完美的理想狀態回到現實。因為不同核心的瀏覽器對CSS的解析效果呈現各異,導致所期望的效果跟瀏覽器的「理解」效果有偏差。
CSS reset就是用來重置(複位)元素在不同核心瀏覽器下的默認值,盡量保證元素在不同瀏覽器下的同一「起跑線」。
對於不同的項目的CSS Reset也會有變化。CSS Reset應當是個人積累的經驗的總結,重置一些經常使用的,在不斷學習中修改。
淘寶網的CSS reset:
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td {margin:0;padding:0;}body,button,input,select,textarea{font:12px/1.5 tahoma,arial,5b8b4f53;}h1,h2,h3,h4,h5,h6{font-size:100%;}address,cite,dfn,em,var{font-style:normal;}code,kbd,pre,samp{font-family:courier new,courier,monospace;}small{font-size:12px;}ul,ol{list-style:none;}a{text-decoration:none;}a:hover{text-decoration:underline;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}legend{color:#000;}fieldset,img{border:0;}button,input,select,textarea{font-size:100%;}table{border-collapse:collapse;border-spacing:0;}
Normalize.css
CSS reset 是革命黨,normalize.css 是改良派。
使用normalize.css,網站需要較少的瀏覽器兼容性修補程序。
Normalize.css 與傳統的 CSS Reset 有哪些區別?Make browsers render all elements more consistently.Modernizr
使用炫酷新穎的 web 技術是一件很有趣的事情,但你不得不面對落後的瀏覽器。Modernizr 使你可以方便地為各種情況編寫 JavaScript 和 CSS,無論瀏覽器是否支持這些特性。這是處理漸進增強的完美方案。
工作原理:
Modernizr 會在頁面載入後立即檢測特性;然後創建一個包含檢測結果的 JavaScript 對象,同時在
html
元素加入方便你調整 CSS 的 class 名。
Modernizr 中文網
Post CSS
PostCSS is a tool for transforming CSS with JS plugins. These plugins can support variables and mixins, transpile future CSS syntax, inline images, and more.
PostCSS是一個很有趣的項目。簡而言之,它將CSS轉換成抽象語法樹(AST),也就是JavaScript可以操作的一種數據形式。基於JavaScript的PostCSS插件可以執行不同的代碼操作。PostCSS本身並沒有改變你的CSS,它請允許插件執行和轉換你的代碼。
實際上,對於CSS的操作,PostCSS插件並沒有任何限制。只要你有想得到的,你都可以寫一個PostCSS插件來實現。
推薦閱讀: