瀏覽器兼容

1.什么是 CSS hack?

答:由于不同廠商的瀏覽器。比如IE庸推、Safari、Mozilla浇冰、Firefox贬媒、Chrome等,或者是同一廠商的瀏覽器的不同版本肘习,如IE6和IE7际乘,對CSS的解析認識完全不一樣,因此會導致生成的頁面效果不一樣漂佩,得不到我們所需要的頁面效果脖含。
這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能在不同的瀏覽器中也能得到我們想要的頁面效果投蝉。簡單的說养葵,CSS hack的目的就是使你的CSS代碼兼容不同的瀏覽器。當然瘩缆,我們也可以反過來利用CSS hack為不同版本的瀏覽器定制編寫不同的CSS效果关拒。

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

答:
處理兼容問題的思路如下:

要不要做:

● 產(chǎn)品的角度(產(chǎn)品的受眾、受眾的瀏覽器比例庸娱、效果優(yōu)先還是基本功能優(yōu)先)
● 成本角度(有無必要做某件事)

做到什么程度:

● 讓哪些瀏覽器支持哪些效果

如何做:

● 根據(jù)兼容需求選擇技術(shù)框架着绊、庫(Jquery)
● 根據(jù)兼容需求選擇兼容工具(html5shiv.js、respond.js熟尉、css reset归露、normalize.css、Modernizr)
● postCSS
● 條件注釋斤儿、CSS Hack 靶擦、js能力檢測做一些補修

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

答:
1.條件注釋法
IE條件注釋法(即HTML條件注釋Hack):針對所有IE(注:IE10+已經(jīng)不再支持條件注釋): ,針對IE6及以下版本: 雇毫。這類Hack不僅對CSS生效玄捕,對寫在判斷語句里面的所有代碼都會生效。
只在IE下生效

只在IE6下生效
<!--[if IE 6]>
這段文字只在IE6瀏覽器顯示
<![endif]-->

只在IE6以上版本生效
<!--[if gte IE 6]>
這段文字只在IE6以上(包括)版本IE瀏覽器顯示
<![endif]-->

只在IE8上不生效
<!--[if ! IE 8]>
這段文字在非IE8瀏覽器顯示
<![endif]-->

非IE瀏覽器生效
<!--[if !IE]>
這段文字只在非IE瀏覽器顯示
<![endif]-->    只在IE下生效
<!--[if IE]>
這段文字只在IE瀏覽器顯示
<![endif]-->

只在IE6下生效
<!--[if IE 6]>
這段文字只在IE6瀏覽器顯示
<![endif]-->

只在IE6以上版本生效
<!--[if gte IE 6]>
這段文字只在IE6以上(包括)版本IE瀏覽器顯示
<![endif]-->

只在IE8上不生效
<!--[if ! IE 8]>
這段文字在非IE8瀏覽器顯示
<![endif]-->

非IE瀏覽器生效
<!--[if !IE]>
這段文字只在非IE瀏覽器顯示
<![endif]-->

2.屬性前綴法(即類內(nèi)部Hack):例如 IE6能識別下劃線""和星號" * "棚放,IE7能識別星號" * "枚粘,但不能識別下劃線"",IE6~IE10都認識"\9"飘蚯,但firefox前述三個都不能認識

.box{
    color: red;
    _color: blue; /*ie6*/
    *color: pink; /*ie67*/
    color: yellow\9;  /*ie/edge 6-8*/
    }

3.選擇器前綴法(即選擇器Hack):例如 IE6能識別html .class{}馍迄,IE7能識別+html .class{}或者*:first-child+html .class{}福也。

*html *前綴只對IE6生效
*+html *+前綴只對IE7生效
@media screen\9{...}只對IE6/7生效
@media \0screen {body { background: red; }}只對IE8有效
@media \0screen\,screen\9{body { background: blue; }}只對IE6/7/8有效
@media screen\0 {body { background: green; }} 只對IE8/9/10有效
@media screen and (min-width:0\0) {body { background: gray; }} 只對IE9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只對IE10有效
等等

4.合適的框架
Bootstrap(>=ie8)
JQuery 1.~(>=ie6) 、JQuery 2.~(>=ie9)
Vue (>=ie9)
5.使用兼容工具
html5shiv.js : 在IE6~8(不支持html5標簽)上模擬html5標簽
respond.js : 在IE6~8(不支持css3)上模擬CSS3 Media Queries
CSS Reset和Normalize.css
Modernizr.js:他會為瀏覽器的html標簽生成一批的css的class名稱攀圈,標記當前瀏覽器支持和不支持的特性暴凑。我們利用html標簽上的類名,就可以為不同版本的不同瀏覽器添加兼容樣式

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

1.條件注釋:條件注釋(conditional comment)是于HTML源碼中被IE有條件解釋的語句赘来。條件注釋可被用來向IE提供及隱藏代碼现喳。使用了條件注釋的頁面在IE9中可正常工作,但在IE10中無法正常工作犬辰。

2.IE Hack:針對IE瀏覽器編寫不同的CSS的讓IE能夠正常渲染的過程

3.js 能力檢測:能力檢測的目標不是識別特定的瀏覽器嗦篱,而是識別瀏覽器的能力。使用這種方式無需顧及瀏覽器如何如何幌缝,只需確定瀏覽器是否支持特定的能力灸促,就可以給出相關(guān)的方案

4.html5shiv.js:用于解決IE9以下版本瀏覽器對HTML5新增標簽不識別,并導致CSS不起作用的問題涵卵。所以我們在使用過程中浴栽,想要讓低版本的瀏覽器,即IE9以下的瀏覽器支持.還有一點需要注意轿偎,在頁面中調(diào)用html5.js文件必須添加在頁面的head元素內(nèi)吃度,因為IE瀏覽器必須在元素解析前知道這個元素,所以這個js文件不能在頁面底部調(diào)用贴硫。

5.respond.js:是一個快速椿每、輕量的 polyfill,用于為 IE6-8 以及其它不支持 CSS3 Media Queries 的瀏覽器提供媒體查詢的 min-width 和 max-width 特性英遭,實現(xiàn)響應式網(wǎng)頁設計(Responsive Web Design)间护。

6.css reset:將瀏覽器的默認樣式全部去掉,更準確說就是通過重新定義標簽樣式挖诸≈撸“覆蓋”瀏覽器的CSS默認屬性。最最簡單的說法就是把瀏覽器提供的默認樣式覆蓋掉

7.normalize.css:是一個很小的CSS文件多律,但它在默認的HTML元素樣式上提供了跨瀏覽器的高度一致性痴突。相比于傳統(tǒng)的CSS reset,Normalize.css是一種現(xiàn)代的、為HTML5準備的優(yōu)質(zhì)替代方案狼荞。

8.Modernizr:是一個用來檢測瀏覽器功能支持情況的 JavaScript 庫辽装。 目前,通過檢驗瀏覽器對一系列測試的處理情況相味,Modernizr 可以檢測18項 CSS3 功能以及40多項關(guān)于HTML5 的功能拾积。 它比傳統(tǒng)檢測瀏覽器名稱(瀏覽器嗅探)的方式更為可靠。 一整套測試的執(zhí)行時間僅需幾微秒。 此外拓巧,Modernizr 網(wǎng)站通過定制腳本只對你感興趣的元素進行檢測斯碌,從而實現(xiàn)效率優(yōu)化。

9.postCSS:PostCSS 是使用 JS 插件來轉(zhuǎn)換 CSS 的工具肛度,支持變量傻唾,混入,未來 CSS 語法承耿,內(nèi)聯(lián)圖像等等冠骄。
PostCSS 包括 CSS 解析器,CSS 節(jié)點樹 API瘩绒,一個源映射生成器和一個節(jié)點樹 stringifier猴抹。
PostCSS是CSS變成JavaScript的數(shù)據(jù)带族,使它變成可操作锁荔。PostCSS是基于JavaScript插件,然后執(zhí)行代碼操作蝙砌。PostCSS自身并不會改變CSS阳堕,它只是一種插件,為執(zhí)行任何的轉(zhuǎn)變鋪平道路择克。

5.一般在哪個網(wǎng)站查詢屬性兼容性恬总?

http://caniuse.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肚邢,隨后出現(xiàn)的幾起案子壹堰,更是在濱河造成了極大的恐慌,老刑警劉巖骡湖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贱纠,死亡現(xiàn)場離奇詭異,居然都是意外死亡响蕴,警方通過查閱死者的電腦和手機谆焊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浦夷,“玉大人辖试,你說我怎么就攤上這事∨” “怎么了罐孝?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肥缔。 經(jīng)常有香客問我肾档,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任怒见,我火速辦了婚禮俗慈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遣耍。我一直安慰自己闺阱,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布舵变。 她就那樣靜靜地躺著酣溃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纪隙。 梳的紋絲不亂的頭發(fā)上赊豌,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音绵咱,去河邊找鬼碘饼。 笑死,一個胖子當著我的面吹牛悲伶,可吹牛的內(nèi)容都是我干的艾恼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麸锉,長吁一口氣:“原來是場噩夢啊……” “哼钠绍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起花沉,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤柳爽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碱屁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磷脯,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年忽媒,在試婚紗的時候發(fā)現(xiàn)自己被綠了争拐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡晦雨,死狀恐怖架曹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闹瞧,我是刑警寧澤绑雄,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站奥邮,受9級特大地震影響万牺,放射性物質(zhì)發(fā)生泄漏罗珍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一脚粟、第九天 我趴在偏房一處隱蔽的房頂上張望覆旱。 院中可真熱鬧,春花似錦核无、人聲如沸扣唱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽噪沙。三九已至,卻和暖如春吐根,著一層夾襖步出監(jiān)牢的瞬間正歼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工拷橘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留局义,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓膜楷,卻偏偏與公主長得像旭咽,于是被迫代替她去往敵國和親贞奋。 傳聞我的和親對象是個殘疾皇子赌厅,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號,讓不同的瀏覽器識別不同的符號(什...
    怎么昵稱閱讀 387評論 0 1
  • CSS Hack 不同的瀏覽器對某些CSS代碼解析會存在一定的差異轿塔,因此就會導致不同瀏覽器下給用戶展示的頁面效果不...
    zx9426閱讀 386評論 0 0
  • 什么是 CSS hack 由于不同廠商的瀏覽器特愿,比如Internet Explorer,Safari,Mozill...
    阿魯提爾閱讀 264評論 0 2
  • 一、前言 做前端開發(fā)勾缭,必然少不了瀏覽器揍障,然而不同的廠商有著各自版本的瀏覽器,不同的瀏覽器對css的理解和解析不一樣...
    青鳴閱讀 502評論 0 2
  • 什么是 CSS hack 引自百度百科的定義: CSS hack由于不同廠商的瀏覽器俩由,比如Internet Exp...
    肥魚666閱讀 154評論 0 0