BFC與瀏覽器兼容

BFC


一、BFC是什么

BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"身冀。它是一個(gè)獨(dú)立的渲染區(qū)域钝尸,只有Block-level box參與括享, 它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干珍促。

二铃辖、如何形成BFC

  • float屬性不設(shè)為none
  • position屬性設(shè)為absolute或fixed
  • display設(shè)為inline-block、table-cell猪叙、table-caption娇斩、flex或inline-flex
  • overflow不設(shè)為visible

三、BFC有什么作用

  • 避免外邊距合并
  • 防止正常文檔流中元素占據(jù)浮動(dòng)元素位置
  • 消除浮動(dòng)
  • 實(shí)現(xiàn)自適應(yīng)布局

外邊距合并


一穴翩、外邊距合會(huì)出現(xiàn)在什么場(chǎng)景下

只有在普通文檔流中會(huì)出現(xiàn)外邊距合并犬第,脫離了文檔流的不會(huì)出現(xiàn)外邊距合并。

二芒帕、外邊距如何合并

  • 值均為正或負(fù)時(shí)歉嗓,合并絕對(duì)值最大的值
  • 一正一負(fù)時(shí),兩值帶符號(hào)相加

三背蟆、如何不讓相鄰元素外邊距合并

  • 不同BFC的元素不會(huì)發(fā)生外邊距合并
  • 如果是父子關(guān)系鉴分,父元素設(shè)置paddingborder可以阻止外邊距合并
    消除合并前

    消除合并后

CSS hack


一、什么是CSS hack

由于不同廠商的瀏覽器带膀,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等志珍,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7垛叨,對(duì)CSS的解析認(rèn)識(shí)不完全一樣伦糯,因此會(huì)導(dǎo)致生成的頁面效果不一樣,得不到我們所需要的頁面效果嗽元。
這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫不同的CSS舔株,讓它能在不同的瀏覽器中也能得到我們想要的頁面效果。
參考網(wǎng)站:饑人谷CSS hack

二还棱、ie6载慈、7的hack怎么寫

常見的ie hack寫法如下

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

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

三、瀏覽器兼容屬性

查詢?yōu)g覽器兼容

  1. inline-block:>=ie8
  2. min-width/min-height:>=ie8
  3. :before/:after: >=ie8
  4. div:hover: >=ie7
  5. background-size: >=ie9
  6. 圓角: >=ie9


  7. 陰影: >=ie9



  8. 動(dòng)畫/漸變: >=ie10



四珍手、漸進(jìn)增強(qiáng)與優(yōu)雅降級(jí)

  1. 漸進(jìn)增強(qiáng):一開始就針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面办铡,完成基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果琳要、交互寡具、追加功能達(dá)到更好的體驗(yàn)。
  2. 優(yōu)雅降級(jí):一開始就構(gòu)建站點(diǎn)的完整功能稚补,然后針對(duì)瀏覽器測(cè)試和修復(fù)童叠。比如一開始使用 CSS3 的特性構(gòu)建了一個(gè)應(yīng)用,然后逐步針對(duì)各大瀏覽器進(jìn)行 hack 使其可以在低版本瀏覽器上正常瀏覽。

五厦坛、名詞解釋

  • 條件注釋
    IE中的條件注釋(Conditional comments)對(duì)IE的版本和IE非IE有優(yōu)秀的區(qū)分能力五垮,是WEB設(shè)計(jì)中常用的hack方法,只能用于IE5以上杜秸。如果你安裝了多個(gè)IE放仗,條件注釋將會(huì)以最高版本的IE為標(biāo)準(zhǔn)。
    條件注釋的基本結(jié)構(gòu)和HTML的注釋()是一樣的撬碟。因此IE以外的瀏覽器將會(huì)把它們看作是普通的注釋而完全忽略它們诞挨。IE將會(huì)根據(jù)if條件來判斷是否如解析普通的頁面內(nèi)容一樣解析條件注釋里的內(nèi)容。
<!--[if ie]>
<link rel="stylesheet" href="ie7.css" type="text/css">
<![endif]-->
  • IE Hack
    CSS Hack大致有3種表現(xiàn)形式呢蛤, CSS屬性前綴法惶傻、選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack,實(shí)際項(xiàng)目中CSS Hack大部分是針對(duì)IE瀏覽器不同版本之間的表現(xiàn)差異而引入的其障。
  • js能力檢測(cè)
    瀏覽器的能力檢測(cè)目標(biāo)不是檢測(cè)特定的瀏覽器银室,而是檢測(cè)瀏覽器的能力。這樣静秆,只需要檢測(cè)瀏覽器是否支持特定的能力粮揉,就可以給出特定的解決方案巡李。這一部分檢測(cè)是解決瀏覽器兼容問題的主要檢測(cè)抚笔。
  • html5shiv.js
    用于解決IE9以下版本瀏覽器對(duì)HTML5新增標(biāo)簽不識(shí)別,并導(dǎo)致CSS不起作用的問題侨拦。由于IE6-8還有很大一部分用戶殊橙,為了讓網(wǎng)站瀏覽者都能正常的訪問HTML5網(wǎng)站,解決方案就有使用Javascript來使不支持HTML5的瀏覽器支持HTML標(biāo)簽狱从。目前大多網(wǎng)站采用的這種方式(Bootcss官方例子也是如此)膨蛮。
    原理:利用腳本document.createElement(“”)創(chuàng)建對(duì)應(yīng)的腳本,CSS選擇器便可正確應(yīng)用到該標(biāo)簽季研。
    使用:考慮到IE9是支持html5的敞葛,所以直接在HTML頁面的head標(biāo)簽中添加腳本引用即可
  • respond.js
    讓不支持CSS3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢。
  • css reset
    將瀏覽器的默認(rèn)樣式全部去掉与涡,就是通過重新定義標(biāo)簽樣式惹谐。“覆蓋”瀏覽器的CSS默認(rèn)屬性驼卖。
  • normalize.css
    normalize.css 是一個(gè)可定制的CSS文件氨肌,使瀏覽器呈現(xiàn)的所有元素,更一致和符合現(xiàn)代標(biāo)準(zhǔn)酌畜。它正是針對(duì)只需要統(tǒng)一的元素樣式擅这。該項(xiàng)目依賴于研究瀏覽器默認(rèn)元素風(fēng)格之間的差異贮喧,精確定位需要重置的樣式帝火。這是一個(gè)現(xiàn)代的巷怜,HTML5-ready 的CSS重置樣式集。
  • Modernizr
    Modernizr 是一個(gè) JavaScript 庫宰衙,用于檢測(cè)用戶瀏覽器的 HTML5 與 CSS3 特性。它可以方便地為各種情況編寫 JavaScript 和 CSS,無論瀏覽器是否支持這些特性蕉扮。這是處理漸進(jìn)增強(qiáng)的完美方案。
    原理:Modernizr 會(huì)在頁面加載后立即檢測(cè)特性颗圣;然后創(chuàng)建一個(gè)包含檢測(cè)結(jié)果的 JavaScript 對(duì)象喳钟,同時(shí)在 html 元素加入方便你調(diào)整 CSS 的 class 名。
  • postCSS
    postCSS 是使用 JS 插件來轉(zhuǎn)換 CSS 的工具在岂,支持變量奔则,混入,未來 CSS 語法蔽午,內(nèi)聯(lián)圖像等等易茬。它包括 CSS 解析器,CSS 節(jié)點(diǎn)樹 API及老,一個(gè)源映射生成器和一個(gè)節(jié)點(diǎn)樹 stringifier抽莱。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市骄恶,隨后出現(xiàn)的幾起案子食铐,更是在濱河造成了極大的恐慌,老刑警劉巖僧鲁,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虐呻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寞秃,警方通過查閱死者的電腦和手機(jī)斟叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來春寿,“玉大人朗涩,你說我怎么就攤上這事“蟾模” “怎么了谢床?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绢淀。 經(jīng)常有香客問我萤悴,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼本冲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼准脂!你這毒婦竟也來了?” 一聲冷哼從身側(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ú)居荒郊野嶺守林人離奇死亡闷板,尸身上長(zhǎng)有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
  • 我被黑心中介騙來泰國(guó)打工窑业, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枕屉。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓常柄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親搀擂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子西潘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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