浮動定位與BFC邊距合并

浮動元素有什么特征?對父容器卸例、其他浮動元素称杨、普通元素、文字分別有什么影響?

  • 特征:
    浮動元素會脫離文檔流筷转,使普通文檔流的元素?zé)o法識別浮動元素姑原,文檔的普通流中的元素表現(xiàn)的就像浮動元素不存在一樣。但是如果浮動的元素后面有一個(gè)文檔流中元素,那么這個(gè)元素的框會表現(xiàn)的像浮動元素不存在,但是框的文本內(nèi)容會受到浮動元素的影響,會移動以留出空間呜舒。元素設(shè)置為浮動之后锭汛,就生成一個(gè)塊級框(css行高提出的概念),沒必要再聲明display:block袭蝗,可以設(shè)置寬高唤殴。
  • 影響:
    • 對父容器來說,浮動元素貼著父容器內(nèi)邊距排列到腥,父容器不會識別浮動元素朵逝,不會撐開父元素高度。
    • 對設(shè)置float的元素會相互識別乡范,對設(shè)置position元素配名,相互之間不會識別啤咽,position元素不會被任何元素都不會識別,包括文字段誊。
    • 普通元素?zé)o法識別浮動元素闰蚕,所以普通元素仍按照普通文檔流布局。

清除浮動指什么? 如何清除浮動?

清楚浮動的目的是解決父容器高度塌陷問題连舍。

  • 清除浮動辦法:
    • 方法一:
    <div style="border: solid 5px #0e0; width:300px;">
      <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
      </div>
      <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
      </div>
      <div style="clear:both;"></div>
    </div>
    
    • 方法二:
      使父元素成為一個(gè)BFC没陡,由于BFC的特性:可以包含浮動元素,所以達(dá)到了清除浮動的效果索赏。
    • 方法三:
      偽元素:
    .clearfix:after{
         content: "";
         display: block;
         clear: both;
    }
    

有幾種定位方式盼玄,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么潜腻,使用場景是什么埃儿?

屬性
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值,使用場景無,一般我們不使用這個(gè)來進(jìn)行定位融涣。
static 默認(rèn)值,沒有定位童番,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對定位的元素,相對于元素本身正常位置進(jìn)行定位,因此威鹿,left:20px 會向元素的 left 位置添加20px剃斧。使用場景一般是為了給子元素一個(gè)參考點(diǎn),使子元素的absolute能夠正常使用忽你。
absolute 生成絕對定位的元素幼东,相對于static定位以外的第一個(gè)祖先元素(offset parent)進(jìn)行定位,元素的位置通過left, top, right 以及 bottom 屬性進(jìn)行規(guī)定。使用場景一般為父容器的子元素進(jìn)行定位科雳。
fixed 生成絕對定位的元素根蟹,相對于瀏覽器窗口進(jìn)行定位。元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定
sticky CSS3新屬性糟秘,表現(xiàn)類似position:relative和position:fixed的合體简逮,在目標(biāo)區(qū)域在屏幕中可見時(shí),它的行為就像它的行為就像position:relative; 而當(dāng)頁面滾動超出目標(biāo)區(qū)域時(shí)尿赚,它的表現(xiàn)就像position:fixed买决,它會固定在目標(biāo)位置.

z-index 有什么作用? 如何使用?

z-index 屬性指定了一個(gè)元素及其子元素的 z-order。 當(dāng)元素之間重疊的時(shí)候吼畏,z-order 決定哪一個(gè)元素覆蓋在其余元素的上方顯示督赤。 通常來說 z-index 較大的元素會覆蓋較小的一個(gè)。Z-index只能工作在被明確定義了absolute泻蚊,fixed或relative 這三個(gè)定位屬性的元素中躲舌。

對于一個(gè)已經(jīng)定位的元素(即position屬性值是非static的元素),z-index 屬性指定:

  1. 元素在當(dāng)前堆疊上下文中的堆疊層級性雄。
  2. 元素是否創(chuàng)建一個(gè)新的本地堆疊上下文没卸。

position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別?

  • position: relative;是相對于自身的位置進(jìn)行偏移,原本所占的位置不會被其他元素占據(jù)羹奉;
  • 負(fù)margin : 自身在文檔流的位置也會隨著變化,會影響其他元素位置约计,可以被其他元素占據(jù)之前位置诀拭。

BFC 是什么?如何生成 BFC煤蚌?BFC 有什么作用耕挨?舉例說明

  • BFC:一個(gè)塊格式化上下文(block formatting context) 是Web頁面的可視化CSS渲染的一部分。它是塊盒子的布局發(fā)生尉桩,浮動互相交互的區(qū)域筒占。

  • 如何形成BFC:

    • float為 left|right
    • overflow為 hidden|auto|scroll
    • display為 table-cell|table-caption|inline-block
    • position為 absolute|fixed
  • 作用:

    • BFC會阻止垂直外邊距(margin-top、margin-bottom)折疊
    • 按照BFC的定義蜘犁,只有同屬于一個(gè)BFC時(shí)翰苫,兩個(gè)元素才有可能發(fā)生垂直Margin的重疊,這個(gè)包括相鄰元素这橙,嵌套元素奏窑,只要他們之間沒有阻擋(例如邊框,非空內(nèi)容屈扎,padding等)就會發(fā)生margin重疊埃唯。
    • 因此要解決margin重疊問題,只要讓它們不在同一個(gè)BFC就行了助隧,但是對于兩個(gè)相鄰元素來說筑凫,意義不大滑沧,沒有必要給它們加個(gè)外殼并村,但是對于嵌套元素來說就很有必要了,只要把父元素設(shè)為BFC就可以了滓技。這樣子元素的margin就不會和父元素的margin發(fā)生重疊
    • BFC不會重疊浮動元素
    • BFC可以包含浮動
    <div style="border: solid 5px #0e0; width:300px;overflow:hidden;">
        <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
        </div>
        <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
        </div>
        <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
        </div>
    </div>

清除浮動撐開父元素的高度

在什么場景下會出現(xiàn)外邊距合并哩牍?如何合并?如何不讓相鄰元素外邊距合并令漂?父子外邊距合并的范例

外邊距合并指的是膝昆,當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距叠必。
合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者荚孵。

只有普通文檔流中塊框的垂直外邊距才會發(fā)生外邊距合并。行內(nèi)框纬朝、浮動框或絕對定位之間的外邊距不會合并

  • 兩個(gè)兄弟元素在垂直方向上合并外邊距收叶,取較大值進(jìn)行合并。
#d1 {
  width:100px;
  height:100px;
  margin-bottom:20px;
}
#d2 {
  width:100px;
  height:100px;
  margin-top:10px;
}

<div id="d1">
</div>

<div id="d2">
</div>
1.gif
  • 當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒有內(nèi)邊距或邊框把外邊距分隔開)共苛,它們的上和/或下外邊距也會發(fā)生合并判没。
<div class=”parent”>
    <div class=”child”>
    </div>
</div>

.parent{
    width: 200px;
    height: 100px;
    margin-top:10px;
    background-color: red;
}
.child{
       width: 100px;
       height: 100px;
       margin-top:30px;
       background-color: yellow;
 }
2.gif
  • 外邊距自己和自己合并
    如果一個(gè)元素沒有邊框和填充蜓萄,但有上下外邊距,這時(shí)它的上下外邊距會合并澄峰。
#d1 {
  margin-top:20px;
  margin-bottom:20px;
}
<div id="d1">
</div>
3.gif
  • 元素垂直方向上的兄弟元素也有外邊距嫉沽,那么垂直方向的外邊距依舊會發(fā)生合并。
#d1 {
  margin-top:50px;
  margin-bottom:20px;
}

#d2 {
  width:100px;
  height:100px;
  margin-bottom: 80px;
}
<div id="d2">
</div>
<div id="d1">
</div>
4.gif

如何解決邊距重疊:

  • 給對應(yīng)元素加上阻擋(例如border俏竞,非空內(nèi)容绸硕,padding等)
  • 利用 BFC會阻止垂直外邊距折疊的特性,將對應(yīng)元素轉(zhuǎn)換為BFC來解決邊距重疊胞此。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末臣咖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漱牵,更是在濱河造成了極大的恐慌夺蛇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酣胀,死亡現(xiàn)場離奇詭異刁赦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闻镶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門甚脉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铆农,你說我怎么就攤上這事牺氨。” “怎么了墩剖?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵猴凹,是天一觀的道長。 經(jīng)常有香客問我岭皂,道長郊霎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任爷绘,我火速辦了婚禮书劝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘土至。我一直安慰自己购对,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布陶因。 她就那樣靜靜地躺著骡苞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烙如,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天么抗,我揣著相機(jī)與錄音,去河邊找鬼亚铁。 笑死蝇刀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的徘溢。 我是一名探鬼主播吞琐,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼然爆!你這毒婦竟也來了站粟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤曾雕,失蹤者是張志新(化名)和其女友劉穎奴烙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剖张,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡切诀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搔弄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚊逢。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卵皂,死狀恐怖细诸,靈堂內(nèi)的尸體忽然破棺而出绿贞,到底是詐尸還是另有隱情,我是刑警寧澤炫刷,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布擎宝,位于F島的核電站,受9級特大地震影響柬唯,放射性物質(zhì)發(fā)生泄漏认臊。R本人自食惡果不足惜圃庭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一锄奢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剧腻,春花似錦拘央、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春栏账,著一層夾襖步出監(jiān)牢的瞬間帖族,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工挡爵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竖般,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓茶鹃,卻偏偏與公主長得像涣雕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子闭翩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

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

  • 浮動元素有什么特征挣郭?對父容器、其他浮動元素疗韵、普通元素兑障、文字分別有什么影響? 浮動模型也是一種可視化格式模型,浮動的...
    姚小帥閱讀 245評論 0 0
  • 問題1:浮動元素有什么特征蕉汪?對父容器旺垒、其他浮動元素、普通元素肤无、文字分別有什么影響? 特征: 脫離文檔的普通流 不被...
    hellowade閱讀 203評論 0 0
  • relative:生成相對定位的元素先蒋,通過top,bottom,left,right的位置相對于其正常位置進(jìn)行定位...
    zx9426閱讀 930評論 0 2
  • 一,浮動元素有什么特征宛渐?對父容器竞漾、其他浮動元素、普通元素窥翩、文字分別有什么影響? 浮動模型是一種可視化格式模型业岁,浮動...
    DeeJay_Y閱讀 856評論 0 4
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評論 1 92