task12

1. 什么是 CSS hack

由于不同廠商的瀏覽器蕊梧,比如IE, Safari, Mozila Firefox, Chrome等矮锈,或者是同一廠商的瀏覽器的不同版本誓酒,如IE 6, IE 10鹏浅,對(duì)于CSS的解析認(rèn)識(shí)不完全一樣,因此會(huì)導(dǎo)致生成的頁(yè)面效果不一樣钳宪,得不到我們所需要的頁(yè)面效果揭北。寫出針對(duì)不同瀏覽器的CSS code就稱為CSS hack。讓它能在不同的瀏覽器中也能得到我們想要的頁(yè)面效果. CSS hack大致有三種表現(xiàn)形式吏颖,CSS屬性前綴法搔体,選擇器前綴法, IE條件注釋法半醉。
參考

2. 談一談瀏覽器兼容的思路

  • 要不要做
    • 產(chǎn)品的角度(產(chǎn)品的受眾嫉柴、受眾的瀏覽器比例、效果有限還是基本功能有先
    • 成本的角度(有無(wú)必要做某件事)
  • 做到什么程度
    • 讓哪些瀏覽器支持哪些效果
  • 如何做
    • 根據(jù)兼容需求選擇技術(shù)框架奉呛、庫(kù)(jquery)
    • 根據(jù)兼容需求選擇兼容工具(html5shiv.js, respond.js, css reset, nomalize.css, Modemizr)
    • postCSS
    • 條件注釋、CSS Hack夯尽、js能力檢測(cè)做一些修補(bǔ)
  • 漸進(jìn)增強(qiáng)(progressive enhancement):針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面瞧壮,保證最基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果匙握、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)
  • 優(yōu)雅降級(jí)(graceful degradation):一開(kāi)始就構(gòu)建完整的功能咆槽,然后再針對(duì)低版本瀏覽器進(jìn)行兼容

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

  • IE條件注釋
<!--[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 lt IE 9]>用于 IE9 以下版本<![endif]-->

<!--[if gte IE 8]>用于 IE8 或更高版本 <![endif]-->
<!--[if lte IE 7]> 用于 IE7或更低版本 <![endif]-->
<!--[if !IE]> -->用于非 IE <!-- <![endif]-->
  • CSS屬性前后綴法
    • “_″IE6 生效
    • "*" IE6 7生效
    • “\9″ IE6/IE7/IE8/IE9/IE10都生效
    • “\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
    • “\9\0″ 只對(duì)IE9/IE10生效圈纺,是IE9/10的hack
  • Trident內(nèi)核:主要代表為IE瀏覽器,前綴為-ms-
    Gecko內(nèi)核:主要代表為Firefox,前綴為-moz-
    Presto內(nèi)核:主要代表為Opera,前綴為-o-
    Webkit內(nèi)核:產(chǎn)要代表為Chrome和Safari,前綴為-webkit-
  • 選擇器前綴法
    針對(duì)一些頁(yè)面表現(xiàn)不一致或者需要特殊對(duì)待的瀏覽器秦忿,在CSS選擇器前加上一些只有某些特定瀏覽器才能識(shí)別的前綴進(jìn)行hack(針對(duì)瀏覽器之間的表現(xiàn)差異而引入的,利用瀏覽器的bug來(lái)進(jìn)行針對(duì)性處理)蛾娶。例如:
    *html *前綴只對(duì)IE6生效
    *+html *+前綴只對(duì)IE7生效
  • 條件注釋法和類選擇器相結(jié)合
<!--[if IE 7]>
<html class="ie7 no-js">
...
</html>
<![endif]-->
--------------------------------------------------------------------
.clearfix {
  /* 在非ie 7 瀏覽器中灯谣,clearfix展現(xiàn)該屬性 */
}
.ie7 .clearfix {
   /* 只有ie7瀏覽器中,clearfix才會(huì)展現(xiàn)該屬性 */
}

參考

  • 使用Modernizr
    Modernizr 會(huì)在頁(yè)面加載后立即檢測(cè)特性蛔琅;然后創(chuàng)建一個(gè)包含檢測(cè)結(jié)果的 JavaScript 對(duì)象胎许,同時(shí)在 html 元素加入方便你調(diào)整 CSS 的 class 名,這些class名稱標(biāo)記當(dāng)前瀏覽器支持哪些特性和不支持哪些特性罗售,支持的特性就直接顯示該天特性的名稱作為一個(gè)class(例:canvas,websockets)辜窑,不支持的特性顯示的class是“no-特性名稱”(可以在css文件中針對(duì)不同的class設(shè)置不同的屬性值)。
<head>      
<meta charset="utf-8">      
<title>My Beautiful Sample Page</title>     
<script src="modernizr-1.5.min.js"></script>  
</head>  
<html class="no-js">
...

<html class=" js no-flexbox canvas canvastext no-webgl no-touch geolocation 
              postmessage no-websqldatabase no-indexeddb hashchange no-history 
        draganddrop no-websockets rgba hsla multiplebgs backgroundsize 
        no-borderimage borderradius boxshadow no-textshadow opacity 
        no-cssanimations no-csscolumns no-cssgradients no-cssreflections
        csstransforms no-csstransforms3d no-csstransitions fontface 
        generatedcontent video audio localstorage sessionstorage 
        no-webworkers no-applicationcache svg inlinesvg smil svgclippaths">

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

  • 條件注釋:條件注釋 ( conditional comment )是用于HTML源碼中被IE有條件解釋的語(yǔ)句寨躁。條件注釋可被用來(lái)向IE提供及隱藏代碼穆碎。(IE 10 及以后不再支持條件注釋)
  • IE Hack: 寫出針對(duì)IE瀏覽器的CSS code稱為IE hack,讓它能在IE瀏覽器中也能得到我們想要的頁(yè)面效果职恳。
  • js 能力檢測(cè):能力檢測(cè)的目標(biāo)不是識(shí)別特定的瀏覽器所禀,而是識(shí)別瀏覽器的能力方面。使用這種方式無(wú)需顧及瀏覽器如何如何,只需確定瀏覽器是否支持特定的能力北秽,就可以給出相關(guān)的方案葡幸。
  • html5shiv.js:用于解決IE9以下版本瀏覽器對(duì)HTML5新增標(biāo)簽不識(shí)別,并導(dǎo)致CSS不起作用的問(wèn)題贺氓。
  • respond.js: Respond.js讓不支持CSS3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢蔚叨。
  • css reset: “樣式重置”——重置瀏覽器默認(rèn)樣式
  • normalize.css: Normalize.css是一種CSS reset的替代方案,

我們創(chuàng)造normalize.css有下面這幾個(gè)目的 :
- 保護(hù)有用的瀏覽器默認(rèn)樣式而不是完全去掉它們
- 一般化的樣式:為大部分HTML元素提供
- 修復(fù)瀏覽器自身的bug并保證各瀏覽器的一致性
- 優(yōu)化CSS可用性:用一些小技巧
- 解釋代碼:用注釋和詳細(xì)的文檔來(lái)

  • Modernizr:一個(gè) JavaScript 庫(kù)辙培,用于檢測(cè)用戶瀏覽器的 HTML5 與 CSS3 特性蔑水。Modernizr 會(huì)在頁(yè)面加載后立即檢測(cè)特性;然后創(chuàng)建一個(gè)包含檢測(cè)結(jié)果的 JavaScript 對(duì)象扬蕊,同時(shí)在 html 元素加入方便你調(diào)整 CSS 的 class 名搀别。
  • postCSS: PostCSS 提供了一個(gè)解析器,它能夠?qū)?CSS 解析成抽象語(yǔ)法樹(shù)(AST)尾抑。PostCSS的目標(biāo)是通過(guò)自定義插件和工具這樣的生態(tài)系統(tǒng)來(lái)改造CSS歇父,把擴(kuò)展的語(yǔ)法和特性轉(zhuǎn)換成現(xiàn)代的瀏覽器友好的CSS。

5. 一般在哪個(gè)網(wǎng)站查詢屬性兼容性再愈?

caniuse

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榜苫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垂睬,更是在濱河造成了極大的恐慌抗悍,老刑警劉巖缴渊,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衔沼,死亡現(xiàn)場(chǎng)離奇詭異俐巴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)擎鸠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門劣光,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绢涡,“玉大人,你說(shuō)我怎么就攤上這事雄可∈唬” “怎么了虐急?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵止吁,是天一觀的道長(zhǎng)敬惦。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么抗蠢? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任迅矛,我火速辦了婚禮秽褒,結(jié)果婚禮上销斟,老公的妹妹穿的比我還像新娘椒舵。我一直安慰自己笔宿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布迈勋。 她就那樣靜靜地躺著靡菇,像睡著了一般昔穴。 火紅的嫁衣襯著肌膚如雪吗货。 梳的紋絲不亂的頭發(fā)上宙搬,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天勇垛,我揣著相機(jī)與錄音闲孤,去河邊找鬼。 笑死肥照,一個(gè)胖子當(dāng)著我的面吹牛舆绎,可吹牛的內(nèi)容都是我干的们颜。 我是一名探鬼主播窥突,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阻问,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了曹鸠?” 一聲冷哼從身側(cè)響起彻桃,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤邻眷,失蹤者是張志新(化名)和其女友劉穎肆饶,沒(méi)想到半個(gè)月后驯镊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體竭鞍,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冯乘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喷好。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片响逢。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舔亭,死狀恐怖钦铺,靈堂內(nèi)的尸體忽然破棺而出矛洞,到底是詐尸還是另有隱情,我是刑警寧澤噩峦,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站凭涂,受9級(jí)特大地震影響切油,放射性物質(zhì)發(fā)生泄漏名惩。R本人自食惡果不足惜绢片,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一巢株、第九天 我趴在偏房一處隱蔽的房頂上張望阁苞。 院中可真熱鬧那槽,春花似錦骚灸、人聲如沸甚牲。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)星岗。三九已至伍茄,卻和暖如春敷矫,著一層夾襖步出監(jiān)牢的瞬間曹仗,已是汗流浹背怎茫。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蜜宪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澳窑。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像麻裁,于是被迫代替她去往敵國(guó)和親煎源。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脚草,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 什么是 CSS hack CSS hack由于不同廠商的瀏覽器姑隅,比如Internet Explorer,Safar...
    luosoo閱讀 209評(píng)論 0 0
  • 1.什么是 CSS hack CSS hack:利用瀏覽器漏洞痪蝇,使css兼容不同的瀏覽器/版本躏啰。共有3種方式: I...
    饑人谷_js_chen閱讀 228評(píng)論 0 0
  • 1毫捣、什么是 CSS hack 由于不同廠商的瀏覽器,比如IE, Safari, Mozilla Firefox, ...
    tangmengyun閱讀 207評(píng)論 0 0
  • 1. 什么是 CSS hack? 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mo...
    ngzk46閱讀 293評(píng)論 0 0
  • 舟停綠水煙波外披粟,家住深山曠野中守屉。 林寒澗肅一縹緲滨巴,竹影柏葉幾歡余恭取。
    略無(wú)闕處閱讀 244評(píng)論 0 0