css浮動定位BFC邊距合并

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

浮動元素特征:

  • 浮動元素會脫離正常的文檔流,按照其外邊距指定的位置相對于它的上一個塊級元素(或父元素)顯示
  • 浮動元素后面的塊級元素的內容會向此浮動元素的外邊距靠齊,但是邊框和背景卻忽略浮動元素而向上一個任意非浮動元素靠齊
  • 浮動元素后面的內聯元素會向此浮動元素的外邊距靠齊

浮動元素造成的影響:

  • 對其父元素的影響
    對于其父元素來說,元素浮動之后,它脫離當前正常的文檔流,所以它也無法撐開其父元素,造成父元素的塌陷
  • 對其兄弟元素(非浮動)的影響
    如果兄弟元素為塊級元素,該元素會忽視浮動元素的而占據它的位置,并且元素會處在浮動元素的下層(并且無法通過z-index屬性改變他們的層疊位置),但它的內部文字和其他行內元素都會環繞浮動元素。如果如果兄弟元素為內聯元素,則元素會環繞浮動元素排列。
  • 對其兄弟元素(浮動)的影響
    同一個方向的浮動元素:當一個浮動元素在浮動過程中碰到同一個方向的浮動元素時,它會緊跟在它們后面
    反方向的浮動元素:互不影響,位于同一條水平線上,當空間不夠時會被擠下
  • 對子元素的影響
    當一個元素浮動時,在沒有清除浮動的情況下,它無法撐開其父元素,但它可以讓自己的浮動子元素撐開它自身,并且在沒有定義具體寬度情況下,使自身的寬度從100%變為自適應(浮動元素display:block)。其高度和寬度均為浮動元素高度和非浮動元素高度之間的最大值。

2.清除浮動指什么? 如何清除浮動? 兩種以上方法

清除浮動是指清除掉元素float屬性

清除浮動的方法:

1.添加新的元素 、應用 clear:both;

HTML:

<div class="outer">
    <div class="div1">1</div>
    <div class="div2">2</div>
    <div class="div3">3</div>
    <div class="clear"></div>
</div>

CSS:

.clear{
  clear:both;
  height: 0; 
  line-height: 0;
  font-size: 0
}
2.使浮動元素的父容器變成BFC,父級div定義 overflow: auto等

HTML:

<div class="outer over-flow"> //這里添加了一個class
   <div class="div1">1</div>
   <div class="div2">2</div>
   <div class="div3">3</div>
   <!--<div class="clear"></div>-->
</div>

CSS:

.over-flow{
    overflow: auto;
    zoom: 1; //zoom: 1; 是在處理ie6兼容性問題
}
3.div:after 方法:(注意:作用于浮動元素的父親)
.outer{
    content:"";
    display:block;
    clear:both;
  }

3.有幾種定位方式,分別是如何實現定位的,參考點是什么,使用場景是什么?

  • inherit
    規定應該從父元素繼承 position 屬性的值
  • static
    默認值,沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
    當你沒有為一個元素(例如div)指定定位方式時,默認為static,也就是按照文檔的流式(flow)定位,將元素放到一個合適的地方。所以在不同的分辨率下,采用流式定位能很好的自適合,取得相對較好的布局效果。left,top屬性對static沒有效果,static是靠margin這些定位的。
  • relative
    生成相對定位的元素,相對于元素本身正常位置進行定位,因此,left:20px 會向元素的 left 位置添加20px
    相對定位的元素仍然在文檔流中,仍然占據著他本來占據的位置空間——雖然他現在已經不在本來的位置了。
  • absolute
    生成絕對定位的元素,相對于static定位以外的第一個祖先元素(offset parent)進行定位,元素的位置通過 left, top, right 以及 bottom 屬性進行規定
    如果你想在一個文檔(Document)中將一個元素放至指定位置,你可以使用absolute來定位,將該元素的position設置為absolute,同時使用top,bottom,left,right來定位。
    如果沒有父元素,位置是相對于body來進行的。
    絕對定位會使元素從文檔流中被刪除,結果就是該元素原本占據的空間被其它元素所填充。
  • fixed
    生成絕對定位的元素,相對于瀏覽器窗口進行定位。元素的位置通過 left, top, right 以及 bottom 屬性進行規定
    fixed定位的參照物總是當前的文檔。利用fixed定位,我們很容易讓一個div定位在瀏覽器文檔的左上,右上等方位。
  • sticky
    CSS3新屬性,表現類似position:relative和position:fixed的合體,在目標區域在屏幕中可見時,它的行為就像position:relative; 而當頁面滾動超出目標區域時,它的表現就像position:fixed,它會固定在目標位置
    兼容性較差,一般用JS實現

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

z-index 屬性設置元素的堆疊順序。擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。

z-index只對定義元素有效

z-index的屬性值:

  • auto 默認值
  • number 類型,number越大,層級越高
  • inherit 繼承父元素的z-index

5.position:relative和負margin都可以使元素位置發生偏移?二者有什么區別

position:relative和負margin都可以使元素位置發生偏移

  • position:relative 相對于元素本身正常位置進行偏移,普通文檔流中的位置仍然保留,即原來位置會留有空白,
    不影響周圍其他元素的布局。
  • 負margin產生的偏移會影響周圍其他普通流中的元素的布局

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

BFC是什么

BFC是block formatting context 塊級格式化上下文的縮寫,是Web頁面中盒模型布局的CSS渲染模式。它的定位體系屬于常規文檔流。BFC是頁面上的一個隔離的獨立容器, 容器里面的子元素不會影響到外面的元素,反之也是如此。

如何生成BFC

給元素添加任何一個可以觸發BFC的css樣式,例如:overflow:hidden,overflow:scroll,display:table-cell,display:inline-block,float:left,float:right等

BFC有什么作用

  • 解決margin重疊:同一BFC下,相鄰元素外邊距會出現重疊,此時改變其中一個元素的BFC就可以解決該問題(多用于嵌套關系)
  • 清浮動:overflow:hidden/auto/scroll或display:inline-block,table-cell或float:left,right添加浮動等方式讓父級形成新的BFC

7.在什么場景下會出現外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例

合并場景

  • 當一個元素出現在另一個元素上面時,第一個元素的底外邊距與第二個元素的頂外邊距會合并
  • 當一個元素包含在另一個元素中時(假設沒有內邊距或邊框將外邊距分隔開),它們的頂和/或底外邊距會合并
  • 當一個空元素有外邊距,但沒有邊框或內邊距時,它的頂外邊距和底外邊距會發生合并,如果空元素與另一個非空元素相鄰,它們的外邊距仍然會發生合并。
    注意:只有普通文檔流中塊框的垂直外邊距才會發生外邊距合并,行內框,浮動框或者絕對定位框之間的外邊距不會發生合并。

如何合并

  • 兩個margin都是正值的時候,取兩者的最大值;
  • 當 margin 都是負值的時候,取的是其中絕對值較大的,然后,從0位置,負向位移;
  • 當有正有負的時候,先取出負 margin 中絕對值中最大的,然后,和正 margin 值中最大的 margin 相加。
  • 所有毗鄰的margin要一起參與運算,不能分步進行。

禁止合并

  • 被非空內容、padding、border 或 clear 分隔開。
  • 不在一個普通流中或一個BFC中。
  • margin在垂直方向上不相鄰。

范例

<style>
      *{margin:0;padding:0;}
      .parent{width:200px;height:200px;margin:10px 0;background:yellow;}
      .child{width:50px;heightz:50px;margin:20px 0;background:blue;}
    </style>
    </head>
    <body>
        <divclass="parent">
            <div class="child"></div>
        </div>
    </body>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容

  • 1. 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動元素脫離普通文檔流,浮動元素...
    怎么昵稱閱讀 449評論 0 0
  • 1.浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 特征 浮動的框可以左右移動(根據f...
    饑人谷_bigJiao閱讀 235評論 0 0
  • 問答 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動元素脫離文檔流,普通流中的塊...
    柏龍閱讀 162評論 0 0
  • 浮動元素有什么特征?對父容器,其他浮動元素,普通元素,文字分別有什么影響? 浮動的框可以隨float的屬性值左右移...
    虛玩玩TT閱讀 250評論 0 0
  • 上一次被虐得死去活來還是大二沉迷《步步驚心》的時候,若曦終究沒等到四爺就死在那個木蘭花盛開的季節,胤禛慌亂失措地尋...
    味至則清閱讀 457評論 0 0