BFC?瀏覽器兼容诅病?

  1. BFC 是什么哪亿?如何生成 BFC?BFC 有什么作用贤笆?舉例說明蝇棉。

    BFC( Block Formatting Context)塊級(jí)格式化上下文。 它是指一個(gè)獨(dú)立的塊級(jí)渲染區(qū)域芥永,只有Block-level BOX參與银萍,該區(qū)域擁有一套渲染規(guī)則來約束塊級(jí)盒子的布局,且與區(qū)域外部無關(guān)恤左。
    CSS2.1中規(guī)定滿足下列CSS聲明之一的元素便會(huì)生成BFC贴唇。

    • 根元素
    • float的值不為none
    • overflow的值不為visible
    • display的值為inline-block、table-cell飞袋、table-caption
    • position的值為absolute或fixed

    一個(gè)BFC會(huì)成為一個(gè)簡單的UI模塊戳气,可以被移動(dòng)到任何位置,并且不會(huì)被其他UI影響巧鸭,亦不會(huì)與其他UI沖突瓶您。因?yàn)锽FC的條件是正常文檔流內(nèi)的塊級(jí)元素,或是清除浮動(dòng)的父元素纲仍,或是脫離文檔流的絕對(duì)/固定定位呀袱。
    另外BFC會(huì)造成子元素的margin重疊。屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生重疊郑叠。


  1. 在什么場景下會(huì)出現(xiàn)外邊距合并夜赵?如何合并?如何不讓相鄰元素外邊距合并乡革?給個(gè)父子外邊距合并的范例

    MDN文檔中的描述:外邊距合并
    根據(jù)文檔描述寇僧,只有上下外邊距才會(huì)出現(xiàn)邊距合并,在兩個(gè)值中取大的沸版。三種基本情況:

    1. 相鄰兄弟元素之間嘁傀;
    2. 父元素與其第一個(gè)子元素可能合并上邊距,與最后一個(gè)子元素可能合并下邊距视粮;
    3. 空的塊級(jí)元素自己的上下邊距也可以合并细办。
      三種情況可能會(huì)疊加。

    合并規(guī)則:

    1. 即使合并值中有0蕾殴,依然正常計(jì)算笑撞。所以子元素的margin值可能會(huì)溢出到父元素外面。
    2. 所需合并值都為正区宇,則取最大值娃殖;
    3. 有正有負(fù),取最大正值減去最大絕對(duì)值的負(fù)值议谷;
    4. 都為負(fù)值炉爆,取最大絕對(duì)值的負(fù)值

    禁止外邊距合并的方法:

    1. 改變布局方式,浮動(dòng)元素和絕對(duì)定位元素不會(huì)計(jì)算外邊距卧晓;
    2. 父子元素之間芬首,可以添加一個(gè)padding(padding: 1px;)或者border(border: 1px solid transparent);
    3. 空元素需要給一個(gè)高度逼裆。height郁稍、min-height、border胜宇、padding或者干脆加進(jìn)一些內(nèi)容耀怜,都可以撐開這個(gè)元素恢着,后面的元素就不會(huì)再參加計(jì)算了。

    外邊距合并DEMO


  1. 什么是 CSS hack财破?在哪個(gè)網(wǎng)站查看標(biāo)簽(屬性)的瀏覽器兼容情況掰派。

    不同廠商的瀏覽器、同一瀏覽器的不同版本左痢、不同時(shí)期的瀏覽器對(duì)CSS的解析實(shí)現(xiàn)都不完全一樣靡羡,使得同一套代碼會(huì)產(chǎn)生不同的效果,與我們的預(yù)期結(jié)果會(huì)有偏差俊性,這時(shí)需要對(duì)不同的瀏覽器做特殊的處理略步,使頁面表現(xiàn)盡可能一致。
    對(duì)不同的瀏覽器做專門的CSS處理定页,這種方式叫做CSS hack趟薄。
    查看兼容性的網(wǎng)站:Can I use。這個(gè)網(wǎng)站也可以查詢一些ECMA標(biāo)準(zhǔn)拯勉、js庫竟趾、原生jsAPI等的兼容情況。


  1. ie6宫峦、7的 hack 寫法是岔帽?

    屬性前綴法(即類內(nèi)部Hack):例如 IE6能識(shí)別下劃線""和星號(hào)" ",IE7能識(shí)別星號(hào)" "导绷,但不能識(shí)別下劃線""犀勒,IE6~IE10都認(rèn)識(shí)"\9",但firefox前述三個(gè)都不能認(rèn)識(shí)
    選擇器前綴法(即選擇器Hack)
    IE條件注釋法(即HTML條件注釋Hack):針對(duì)所有IE(注:IE10+已經(jīng)不再支持條件注釋): 妥曲,針對(duì)IE6及以下版本:贾费。這類Hack不僅對(duì)CSS生效,對(duì)寫在判斷語句里面的所有代碼都會(huì)生效

    .box{
    color: red;
    _color: blue; /ie6/
    color: pink; /ie67/
    color: yellow\9; /
    ie/edge 6-8*/
    }
    <!–-[if IE 7]>

    <link rel="stylesheet" href="ie7.css" type="text/css" />
    <![endif]–->


  1. 如下屬性檐盟,兼容哪些瀏覽器褂萧?

    1. inline-block: IE8以上完全支持
    2. min-width/min-height IE7以上,7葵萎、8不支持inherit值
    3. :before,:afte: IE9以上完全支持
    4. div:hover IE7以上完全支持
    5. background-size IE9以上完全支持
    6. 圓角 IE9以上完全支持
    7. 陰影
      box-shadow:IE9以上完全支持
      text-shadow:IE10以上支持导犹,不支持spread
    8. 動(dòng)畫/漸變
      animation:IE10以上完全支持
      Gradients:IE10以上支持背景漸變和重復(fù)漸變

  1. 漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)分別是什么意思?

    漸進(jìn)增強(qiáng)意味著先按照所需要兼容的最低版本的瀏覽器進(jìn)行開發(fā)羡忘,然后逐漸增加一些新的特性滿足更高版本瀏覽器用戶的體驗(yàn)谎痢。漸進(jìn)增強(qiáng)開發(fā)難度高于優(yōu)雅降級(jí),這種開發(fā)模式可以保證所有用戶都可正常使用所有功能卷雕,不過用戶體驗(yàn)可能低于優(yōu)雅降級(jí)的開發(fā)方式节猿。
    優(yōu)雅降級(jí)正好相反,先按一般用戶使用的瀏覽器版本進(jìn)行開發(fā)漫雕,保證大部分用戶的正常使用滨嘱,然后對(duì)低版本的瀏覽器做一些兼容去兼顧少量低版本用戶峰鄙。優(yōu)雅降級(jí)的開發(fā)模式可能導(dǎo)致少部分用戶甚至無法正常使用網(wǎng)站的功能,但是開發(fā)簡單速度快九孩,可以使用新特性先馆,會(huì)帶來更好的用戶體驗(yàn)。


  1. 以下工具/名詞是做什么的躺彬?

    • 條件注釋

    • IE Hack

    • js 能力檢測

    • html5shiv.js

    • respond.js

    • css reset

    • normalize.css

    • Modernizr

    • postCSS

    • 條件注釋:IE瀏覽器支持在一段注釋中書寫代碼,并注明適配的瀏覽器版本梅惯,符合版本的瀏覽器可以運(yùn)行該注釋中的代碼宪拥,不符合的瀏覽器會(huì)將該部分代碼看作是注釋。此功能僅對(duì)IE瀏覽器有效铣减。

    • IE Hack:IE的CSS中有一些bug她君,輸入* - / /9 等等不符合一般CSS標(biāo)準(zhǔn)的符號(hào)時(shí),IE可以識(shí)別葫哗,一般其他的瀏覽器都不能識(shí)別缔刹。利用這一特性我們可以針對(duì)IE做出一些CSS上的調(diào)整。注意IE一直在修復(fù)這些問題劣针,有些原來支持IE9或IE10的寫法可能不被更高等級(jí)的瀏覽器支持校镐。

    • js 能力檢測:對(duì)于不同的瀏覽器,不檢測其版本捺典,而是檢測其是否具有需要使用的功能鸟廓。比如Ajax基于XMLHttpRequest對(duì)象,在IE中對(duì)應(yīng)為ActiveXObject襟己,代碼中如果判斷XMLHttpRequest為undefined不存在引谜,那么后面的請(qǐng)求則使用ActiveXObject對(duì)象完成相應(yīng)功能。

    • html5shiv.js:用于解決IE9以下版本瀏覽器對(duì)HTML5新增標(biāo)簽不識(shí)別擎浴,并導(dǎo)致CSS不起作用的問題员咽。利用腳本document.createElement()創(chuàng)建對(duì)應(yīng)的腳本,CSS選擇器便可正確應(yīng)用到該標(biāo)簽贮预。

    • respond.js:讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢贝室。

    • css reset:重置樣式,清除瀏覽器默認(rèn)樣式萌狂,并配置適合設(shè)計(jì)的基礎(chǔ)樣式(強(qiáng)調(diào)文本是否大多是粗體档玻、主文字色,主鏈接色茫藏,主字體等)误趴。

    • normalize.css:使瀏覽器可以更加一致地呈現(xiàn)所有元素,并符合現(xiàn)代標(biāo)準(zhǔn)务傲。它精確地只針對(duì)需要標(biāo)準(zhǔn)化的樣式凉当。

    • Modernizr:是一個(gè) JavaScript 庫枣申,用于檢測用戶瀏覽器的 HTML5 與 CSS3 特性。Modernizr 使你可以方便地為各種情況編寫 JavaScript 和 CSS看杭,無論瀏覽器是否支持這些特性忠藤。這是處理漸進(jìn)增強(qiáng)的完美方案。

    • postCSS:使用JS幫助重新生成標(biāo)準(zhǔn)CSS代碼楼雹,提供功能有批量增加廠商前綴模孩、標(biāo)準(zhǔn)化CSS、支持使用預(yù)處理器的CSS寫法贮缅、提供模擬的CSS命名空間榨咐、內(nèi)置的網(wǎng)格系統(tǒng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谴供,一起剝皮案震驚了整個(gè)濱河市块茁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桂肌,老刑警劉巖数焊,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崎场,居然都是意外死亡佩耳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門照雁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚕愤,“玉大人,你說我怎么就攤上這事饺蚊∑加眨” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵污呼,是天一觀的道長裕坊。 經(jīng)常有香客問我,道長燕酷,這世上最難降的妖魔是什么籍凝? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮苗缩,結(jié)果婚禮上饵蒂,老公的妹妹穿的比我還像新娘。我一直安慰自己酱讶,他們只是感情好退盯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般渊迁。 火紅的嫁衣襯著肌膚如雪慰照。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天琉朽,我揣著相機(jī)與錄音毒租,去河邊找鬼。 笑死箱叁,一個(gè)胖子當(dāng)著我的面吹牛墅垮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝌蹂,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼噩斟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孤个?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤沛简,失蹤者是張志新(化名)和其女友劉穎齐鲤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椒楣,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡给郊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捧灰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淆九。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毛俏,靈堂內(nèi)的尸體忽然破棺而出炭庙,到底是詐尸還是另有隱情,我是刑警寧澤煌寇,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布焕蹄,位于F島的核電站,受9級(jí)特大地震影響阀溶,放射性物質(zhì)發(fā)生泄漏腻脏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一银锻、第九天 我趴在偏房一處隱蔽的房頂上張望永品。 院中可真熱鬧,春花似錦击纬、人聲如沸鼎姐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽症见。三九已至喂走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谋作,已是汗流浹背芋肠。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遵蚜,地道東北人帖池。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像吭净,于是被迫代替她去往敵國和親睡汹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案寂殉? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評(píng)論 1 92
  • BFC 是什么囚巴?如何生成 BFC?BFC 有什么作用友扰?舉例說明彤叉。 BFC 全稱 Block Formatting ...
    禮知白閱讀 360評(píng)論 0 1
  • BFC 是什么?如何生成 BFC村怪?BFC 有什么作用秽浇?舉例說明。 BFC全稱Block Formatting Co...
    饑人谷潘同學(xué)閱讀 253評(píng)論 0 0
  • 1. 前言 前端圈有個(gè)“股醺海”:在面試時(shí)柬焕,問個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)梭域。在...
    YjWorld閱讀 4,446評(píng)論 5 15
  • 姓名:陳國林 公司:寧波大發(fā)化纖有限公司 組別:寧波盛和塾第235期利他3組 日精打卡時(shí)間:2017-06-06 ...
    陳國林閱讀 214評(píng)論 0 0