什么是CSS hack幔崖?
不同瀏覽器食店,或者相同瀏覽器的不同版本,對CSS的解析可能不同赏寇,導致頁面展現(xiàn)效果不一致吉嫩。為了達到預期的展現(xiàn)效果,我們需要對不同瀏覽器的某些樣式寫不同的CSS蹋订。
CSS hack 的三種常見方法
條件注釋率挣。
主要針對的是IE瀏覽器,因為IE瀏覽器(x-9)可以“讀懂”注釋里面的一些暗語露戒,通過條件限制,就可以選擇在什么樣的情況下捶箱,讀取不一樣的CSS智什。(IE10不支持)選擇器前綴。
通過瀏覽器的某些版本的一些BUG丁屎,可以識別CSS非標準寫法荠锭。據(jù)此,我們可以對導致不兼容的css 寫法進行重寫晨川,就可以覆蓋前面的展現(xiàn)效果证九。屬性前綴
同瀏覽器前綴删豺, IE6 可以識別" _ "和“ * ”,IE7 可以識別 “ * ”愧怜,IE6-10可以識別 “\9” 呀页。
談一談瀏覽器兼容的思路。
- 要不要去兼容拥坛?
首先蓬蝶,需要知道產品定位是什么,針對什么樣的人群猜惋?必須針對所有用戶丸氛,還是只是針對特定人群?是否有無必要為了少部分人群來增加成本著摔?
- 兼容到什么程度缓窜?
必須展現(xiàn)與最新瀏覽器展現(xiàn)一樣的效果?還是說只兼顧到部分效果谍咆?還是最低層次的滿足基本使用功能雹洗,不出現(xiàn)排版混亂?
- 用什么樣的方式去兼容卧波?
漸進增強时肿?還是優(yōu)雅降級?
- 選擇合適的庫及工具港粱,實現(xiàn)兼容
選擇好整體方法及思路以后螃成,就可以選擇合適的庫,針對不同的問題查坪,采取不同的方法來處理兼容性問題了寸宏。
列出5種以上瀏覽器兼容的寫法。
- 條件注釋偿曙。
<!--[if IE 6]-->
<p>adfad</p>
<![endif]-->//如果是IE6 就會有<p>
<!--[if !IE]--><!-->
####
<!--<![endif]-->//如果不是IE
常見的有
[if !IE]//如果不是IE.
[if lt IE 5.5]//如果小于IE5.5版本
[if lte IE 6]//如果小于等于IE 6版本
[if gt IE 7]//如果大于IE 7版本
[if gte IE 8]//若果大于等于IE 8版本
[if (IE 6)|(IE 7)]//如果是IE 6 或者 IE 7
- 屬性前綴
.box {
color:red;
color:pink\9;
*color:blue;
_color:yellow;
}
ie 6 黃色氮凝,IE 7藍色,IE8-10粉色望忆,其他紅色罩阵。
-webkit- ,針對safari启摄,chrome瀏覽器的內核CSS寫法
-moz-稿壁,針對firefox瀏覽器的內核CSS寫法
-ms-,針對ie內核的CSS寫法
-o-歉备,針對Opera內核的CSS寫法
- 選擇器前綴
*.clear {}只有IE6和IE7可以識別這個選擇器傅是。
以下工具/名詞是做什么的?
條件注釋
CSS hack的一種方式,處理IE10以下的兼容性問題的一種方法。IE hack
針對IE瀏覽器喧笔,寫不同的CSS 帽驯,讓IE瀏覽器展現(xiàn)開發(fā)人員想要的頁面。js 能力檢測
瀏覽器的能力檢測目標不是檢測特定的瀏覽器书闸,而是檢測瀏覽器的能力尼变。這樣,只需要檢測瀏覽器是否支持特定的能力梗劫,就可以給出特定的解決方案享甸。這一部分檢測是解決瀏覽器兼容問題的主要檢測。html5shiv.js
用于解決IE9以下版本瀏覽器對HTML5新增標簽不識別梳侨,并導致CSS不起作用的問題蛉威。respond.js
用于為 IE6-8 以及其它不支持 CSS3 媒體查詢功能的瀏覽器提供媒體查詢的 min-width 和 max-width 特性,實現(xiàn)響應式網(wǎng)頁設計走哺。css reset
將瀏覽器的默認樣式全部去掉蚯嫌,更準確說就是通過重新定義標簽樣式”铮“覆蓋”瀏覽器的CSS默認屬性择示。最最簡單的說法就是把瀏覽器提供的默認樣式覆蓋掉!這就是CSS reset晒旅。normalize.css
Normalize.css 是一個可以定制的CSS文件栅盲,它讓不同的瀏覽器在渲染網(wǎng)頁元素的時候形式更統(tǒng)一。
它可以:
保留有用的默認值废恋,不同于許多 CSS reset 的簡單粗暴谈秫。
標準化的樣式,適用范圍廣的元素鱼鼓。
糾正錯誤和常見的瀏覽器的不一致性拟烫。
一些細微的改進,提高了易用性迄本。
使用詳細的注釋來解釋代碼硕淑。Modernizr
Modernizr 使你可以方便地為各種情況編寫 JavaScript 和 CSS,Modernizr 會在頁面加載后立即檢測特性嘉赎;然后創(chuàng)建一個包含檢測結果的 JavaScript 對象置媳,同時在 html 元素加入方便你調整 CSS 的 class 名。postCSS
它可以被理解為一個平臺曹阔,可以讓一些插件在上面跑半开,它提供了一個解析器,可以將CSS解析成抽象語法樹赃份,通過PostCSS這個平臺,我們能夠開發(fā)一些插件,來處理CSS抓韩。熱門插件如autoprefixer纠永,它可以幫我們處理兼容問題,只需正常寫CSS谒拴,autoprefixer可以幫我的自動生成兼容性代碼尝江。
查詢屬性兼容性
caniuse.com 兼容性查詢
browserhacks.com hack寫法