前端面試題之CSS(四)


BFC 是什么?如何生成 BFC?有什么特性?BFC 有什么作用?舉例說明

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

  • 1.根元素的產(chǎn)生
    2.float屬性不為none
    3.position為absolute或fixed
    4.display為inline-block,flex,或者inline-flex;
    5.overflow不為visible;

  • 1.內(nèi)部的box會在垂直方向,一個(gè)接一個(gè)地放置

    2.Box垂直方向的距離由margin決定。屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會發(fā)生重疊每個(gè)元素的margin box的左邊,與包含塊border box的左邊相接觸(對于從左往右的格式化,否則相反)。即使存在浮動也是如此。

    1. BFC的區(qū)域不會與float box重疊

    4.BFC就是頁面上的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會影響到外面的元素。反之也如此。

    5.計(jì)算BFC的高度時(shí),浮動元素也參與計(jì)算。

  • 1.解決margin合并


header元素上面的那條間距,是h1有外邊距,h1與header產(chǎn)生外邊距合并的結(jié)果。
解決方法:

生成BFC

代碼:http://js.jirengu.com/wawoz/1/edit?html,css,output

2.contain float


我們給nav設(shè)置背景色,卻沒有顯示顏色,因?yàn)樽釉?li浮動,導(dǎo)致父元素nav高度塌陷,所以我們要清除浮動。
解決方法:


image.png

代碼:http://js.jirengu.com/nede/1/edit


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

  • 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7,對CSS的解析認(rèn)識不完全一樣,因此會導(dǎo)致生成的頁面效果不一樣,得不到我們所需要的頁面效果。
    這個(gè)時(shí)候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能在不同的瀏覽器中也能得到我們想要的頁面效果。
    參考資料 :饑人谷 CSS HACK

  • can i use


ie6、7的 hack 寫法是?

常見hack寫法

.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]–->

常見兼容處理范例

.clearfix:after{
  content: '';
  display: block;
  clear: both;
}
.clearfix{
  *zoom: 1; /* 僅對ie67有效 */
}
.target{
  display: inline-block;
  *display: inline;
  *zoom: 1;
}
 <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->
<!DOCTYPE html>
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->

如下屬性,兼容哪些瀏覽器?

使用http://caniuse.com/查詢?yōu)g覽器兼容

  1. inline-block: >=ie8
image.png
  1. min-width/min-height: >=ie8
image.png
  1. :before,:after:>=ie8
image.png
  1. >= ie8
    http://www.zhangxinxu.com/wordpress/2010/04/%E8%AE%A9ie6ie7ie8%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81css3%E5%B1%9E%E6%80%A7/

  2. div:hover:>=ie7

image.png

6.>= ie7
http://www.zhangxinxu.com/wordpress/2010/04/%E8%AE%A9ie6ie7ie8%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81css3%E5%B1%9E%E6%80%A7/

  1. background-size: >=ie9
image.png
  1. 圓角:>= ie9
image.png
  1. 陰影: >= ie9
image.png
image.png
  1. 動畫/漸變: >= ie10
image.png
image.png

css reset 是什么?css 預(yù)編譯器是什么? 后編譯器(post css)是什么?

css reset就是去除一些瀏覽器默認(rèn)樣式
它們基于 CSS 擴(kuò)展了一套屬于自己的 DSL,來解決我們書寫 CSS 時(shí)難以解決的問題
語法不夠強(qiáng)大,比如無法嵌套書寫導(dǎo)致模塊化開發(fā)中需要書寫很多重復(fù)的選擇器;
沒有變量和合理的樣式復(fù)用機(jī)制,使得邏輯上相關(guān)的屬性值必須以字面量的形式重復(fù)輸出,導(dǎo)致難以維護(hù)。
從這里了解postcss(https://segmentfault.com/a/1190000003909268)
PostCSS 就是最近被推薦的一個(gè)樣式處理工具。PostCSS 旨在通過自定義的插件和工具生態(tài)體系來重新定義 CSS。與類似 Sass 和 LESS 這樣的預(yù)處理機(jī)制類似,它可以把擴(kuò)展的語法和功能轉(zhuǎn)換成現(xiàn)代的瀏覽器友好的 CSS 代碼。
post css :PostCSS 可以直觀的理解為:它就是一個(gè)平臺
PostCSS 提供了一個(gè)解析器,它能夠?qū)?CSS 解析成抽象語法樹(AST)。
它能夠?yàn)?CSS 提供額外的功能;
通過在 PostCSS 這個(gè)平臺上,我們能夠開發(fā)一些插件,來處理我們的CSS,比如熱門的:autoprefixer
我們能夠使用JavaScript來開發(fā)插件(這點(diǎn)對前端來說很重要)
參考資料:css reset

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,172評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,844評論 1 19
  • 本文由我收集總結(jié)了一些前端面試題,初學(xué)者閱后也要用心鉆研其中的原理,重要知識需要系統(tǒng)學(xué)習(xí)、透徹學(xué)習(xí),形成自己的知識...
    王鈺峰閱讀 538評論 0 2
  • 人心如樹葉,一生一落,一落一生,每一個(gè)光陰流轉(zhuǎn)的季節(jié),都有嫩芽懸于枝頭。人心是容器,時(shí)常刷新,時(shí)常清空,才會面朝陽...
    漂浮的流云閱讀 308評論 0 1
  • 如果,那天雨沒下 也許 ,你會向我走來 如果,那天舟可行 也許,你會乘舟而至 ...
    渡夫if閱讀 173評論 0 1

友情鏈接更多精彩內(nèi)容