瀏覽器兼容問(wèn)題

什么是 CSS hack?

由于不同廠商的流覽器或某瀏覽器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等)框沟,對(duì)CSS的支持、解析不一樣,導(dǎo)致在不同瀏覽器的環(huán)境中呈現(xiàn)出不一致的頁(yè)面展現(xiàn)效果桨啃。這時(shí),為了獲得統(tǒng)一的頁(yè)面效果檬输,就需要針對(duì)不同的瀏覽器或不同版本寫特定的CSS樣式照瘾,把這個(gè)針對(duì)不同的瀏覽器/不同版本寫相應(yīng)的CSS code的過(guò)程,叫做CSS hack丧慈。其原理是由于不同的瀏覽器和瀏覽器各版本對(duì)CSS的支持及解析結(jié)果不一樣析命,以及CSS優(yōu)先級(jí)對(duì)瀏覽器展現(xiàn)效果的影響,我們可以據(jù)此針對(duì)不同的瀏覽器情景來(lái)應(yīng)用不同的CSS逃默。CSS hack有3種表現(xiàn)形式鹃愤,CSS屬性前綴法、選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack完域,實(shí)際項(xiàng)目中CSS Hack大部分是針對(duì)IE瀏覽器不同版本之間的表現(xiàn)差異而引入的软吐。
a. 屬性前綴法(即類內(nèi)部Hack):例如 IE6能識(shí)別下劃線"_"和星號(hào)" * ",IE7能識(shí)別星號(hào)" * "吟税,但不能識(shí)別下劃線""凹耙,IE6~IE10都認(rèn)識(shí)"\9"姿现,但Firefox前述三個(gè)都不認(rèn)識(shí)。
b. 選擇器前綴法(即選擇器Hack)
c. IE條件注釋法(即HTML條件注釋Hack):針對(duì)所有IE(注:IE10+已經(jīng)不再支持條件注釋): 肖抱,針對(duì)IE6及以下版本:备典。這類Hack不僅對(duì)CSS生效,對(duì)寫在判斷語(yǔ)句里面的所有代碼都會(huì)生效

處理瀏覽器兼容問(wèn)題的思路

(1)要不要做:產(chǎn)品的角度(產(chǎn)品的受眾人群虐沥,受眾的瀏覽器比例熊经,效果優(yōu)先還是功能優(yōu)先),是否有必要為小部分人群兼容欲险;成本的角度(有沒有必要做某件事情)
(2)做到什么程度:要讓哪些瀏覽器支持哪些效果镐依;
(3)如何做:
a. 根據(jù)兼容需求選擇兼容技術(shù)框架\庫(kù)和兼容工具(JQuery,css reset,normalizr,respond.js ,html5shiv)
b. 使用條件注釋,css hack天试,js能力檢測(cè)做一些修補(bǔ)

列舉5種以上瀏覽器兼容的寫法

  1. html5shiv.js讓IE等瀏覽器支持HTML5槐壳。

  2. 條件注釋法

項(xiàng)目 范例 說(shuō)明
[if !IE] 非IE
It [if It IE 5.5] 小于IE5.5
Ite [if Ite IE 6] 小于等于IE6
gt [if gt IE 5] 大于 IE5
gte [if gte IE7] 大于等于IE7
I [if(IE6)I(IE7)] IE6或者IE7
  1. 選擇器前綴法
*html  *前綴只對(duì)IE6生效
*+html *+前綴只對(duì)IE7生效
@media screen\9{...}只對(duì)IE6/7生效
@media \0screen {body { background: red; }}只對(duì)IE8有效
@media \0screen\,screen\9{body { background: blue; }}只對(duì)IE6/7/8有效
@media screen\0 {body { background: green; }} 只對(duì)IE8/9/10有效
@media screen and (min-width:0\0) {body { background: gray; }} 只對(duì)IE9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只對(duì)IE10有效
  1. 屬性前綴法
.box{
color: red;
_color: blue; /*ie6*/
*color: pink; /*ie67*/
color: yellow\9;  /*ie/edge 6-8*/
}
  1. 使用Modernizr喜每。Modernizr運(yùn)行時(shí)會(huì)在html元素上添加一批CSS的class名稱务唐,這些class名稱標(biāo)記當(dāng)前瀏覽器支持哪些特性和不支持哪些特性,支持的特性就直接使用該特性的名稱作為一個(gè)class带兜,不支持的特性顯示的class是“no-特性名稱”枫笛。
    可以直接使用Modernizr在元素里生成的class名稱,在你的css文件里定義相應(yīng)的屬性以便支持當(dāng)前瀏覽器

以下工具/名詞是做什么的

條件注釋:HTML源碼中被IE有條件解釋的語(yǔ)句刚照。條件注釋可被用來(lái)向IE提供及隱藏代碼刑巧。
IE Hack:使用特殊的符號(hào)或者方式寫出只有IE瀏覽器可以解析的代碼,如CSS屬性前綴法无畔、選擇器前綴法以及IE條件注釋法
js 能力檢測(cè):能力檢測(cè)的目標(biāo)是識(shí)別瀏覽器的能力啊楚。使用這種方式無(wú)需顧及瀏覽器如何如何,只需確定瀏覽器是否支持特定的能力浑彰,就可以給出相關(guān)的方案恭理。
html5shiv.js:解決一些瀏覽器不支持html5的一些新特性和標(biāo)簽的問(wèn)題。
respond.js:解決在做響應(yīng)式網(wǎng)頁(yè)的時(shí)候一些瀏覽器不支持媒體查詢的問(wèn)題郭变。
css reset:重新定義樣式屬性颜价,將瀏覽器默認(rèn)樣式覆蓋掉。
normalize.css:保護(hù)有用的瀏覽器默認(rèn)樣式而不是完全去掉它們诉濒,修復(fù)瀏覽器自身的bug并保證各瀏覽器的一致性周伦,用一些小技巧優(yōu)化CSS可用性。相比于傳統(tǒng)的CSS reset循诉,Normalize.css是一種現(xiàn)代的横辆、為HTML5準(zhǔn)備的優(yōu)質(zhì)替代方案撇他。
Modernizr:Modernizr會(huì)在頁(yè)面加載時(shí)自動(dòng)檢測(cè)瀏覽器的特性茄猫,并html元素上添加一批CSS的class名稱狈蚤,這些class名稱標(biāo)記當(dāng)前瀏覽器支持哪些特性和不支持哪些特性。
postCSS:postCSS是一款通過(guò)JS插件來(lái)轉(zhuǎn)換CSS的工具划纽。這些插件能幫你校驗(yàn)?zāi)愕腃SS代碼脆侮、轉(zhuǎn)換未來(lái)的CSS語(yǔ)法、支持變量和混寫勇劣、以及內(nèi)聯(lián)圖片等等靖避。

在哪個(gè)網(wǎng)站查詢屬性兼容性?

http://caniuse.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末比默,一起剝皮案震驚了整個(gè)濱河市幻捏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌命咐,老刑警劉巖篡九,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異醋奠,居然都是意外死亡榛臼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門窜司,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沛善,“玉大人,你說(shuō)我怎么就攤上這事塞祈〗鸬螅” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵织咧,是天一觀的道長(zhǎng)胀葱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笙蒙,這世上最難降的妖魔是什么抵屿? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮捅位,結(jié)果婚禮上轧葛,老公的妹妹穿的比我還像新娘。我一直安慰自己艇搀,他們只是感情好尿扯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焰雕,像睡著了一般衷笋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上矩屁,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天辟宗,我揣著相機(jī)與錄音爵赵,去河邊找鬼。 笑死泊脐,一個(gè)胖子當(dāng)著我的面吹牛空幻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播容客,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼秕铛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缩挑?” 一聲冷哼從身側(cè)響起但两,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎供置,沒想到半個(gè)月后镜遣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡士袄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年悲关,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娄柳。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寓辱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赤拒,到底是詐尸還是另有隱情秫筏,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布挎挖,位于F島的核電站这敬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蕉朵。R本人自食惡果不足惜崔涂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望始衅。 院中可真熱鬧冷蚂,春花似錦、人聲如沸汛闸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诸老。三九已至隆夯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹄衷。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工苞尝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宦芦。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轴脐,于是被迫代替她去往敵國(guó)和親调卑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 什么是 CSS hack CSS hack是通過(guò)在CSS樣式中加入一些特殊的符號(hào)大咱,讓不同的瀏覽器識(shí)別不同的符號(hào)(什...
    怎么昵稱閱讀 389評(píng)論 0 1
  • 什么是css hack css hack 由于不同廠商的瀏覽器恬涧,比如Internet Explorer、 Safa...
    饑人谷_羅丹閱讀 381評(píng)論 0 0
  • 1.什么是 CSS hack碴巾? 由于不同廠商的瀏覽器溯捆,比如Internet Explorer,Safari,Moz...
    南山碼農(nóng)閱讀 642評(píng)論 0 0
  • 1.什么是 CSS hack? 由于不同廠商的瀏覽器厦瓢,比如internet explorer ,SAFARI,mo...
    _達(dá)斯基閱讀 608評(píng)論 0 0
  • 清晨的陽(yáng)光依舊的溫暖如縷提揍,即便是抬起頭來(lái)看,也不會(huì)讓眼睛感覺到絲毫的刺激煮仇。 其實(shí)太陽(yáng)光的本質(zhì)就是這樣劳跃,會(huì)給予溫暖,...
    大柳丶閱讀 353評(píng)論 0 0