CSS原理解析之模型篇
生活随笔
收集整理的這篇文章主要介紹了
CSS原理解析之模型篇
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫在前面:
嘗試回答幾個問題:目錄
包含塊(containing block) 盒模型(Box model) 定位模式(Positioning schemes) 層疊關系(Layered presentation)包含塊
概念 每個盒子會變成他后代盒子的包含塊,后代盒子的大小和位置會根據他包含塊的矩形邊框進行計算。但是不會受到包含塊的限制,可能會溢出。 確定包含塊的方法盒模型
Margin- 水平的margin不會合并(inline-block和inline都支持) 示例代碼
- 都屬于常規流內(in flow)塊級盒,處于同一個上下文的兄弟元素 解決方法:將其中一個塊盒變成BFC,阻止margin的合并 示例代碼
- 塊級父元素和其子元素,在沒有padding,border,height,空隙將之隔開時,子元素的margin會滲透到父元素上。簡單講,父元素和子元素之間沒有其他元素。示例代碼
- 對于position=static元素,負值相當于將元素向負值方向移動覆蓋,但是只會覆蓋顏色,不會覆蓋文字。示例代碼
- 對于position=relative元素, 負值還是會把下面的元素粘著一起移動,但會完全覆蓋前一個元素。示例代碼
- 對于position=absolute元素,因為元素脫離了文檔流,所以負值只會自己發生偏移,對前后元素沒有任何影響。示例代碼
- 對于float元素,可以通過負值進行覆蓋,最常見的應用是三欄應用。示例代碼
- 根據包含塊的content box寬度計算
- 如果當前元素是絕對定位,那么相對父元素的padding box的寬度定位
定位模式
常規流 流內元素有幾大模型。CSS2.1中定義了IFC(Inline Formatting Contexts)與 BFC(Block Formatting Contexts)。CSS3中增加了GFC(GridLayout Formatting Contexts)和FFC(Flex Formatting Context)。后兩個后續文章會詳細講解,這里暫且不提。 BFC(Block formatting contexts)塊格式化上下文- 浮動
- 絕對定位
- 非塊盒的塊容器(inline-block)
- overflow不為visible的塊盒
- 從包含塊頂部豎直方向排列
- BFC內部兄弟盒子之間的margin會合并——可以通過把兄弟之一變成BFC解決合并
- BFC可以阻止margin合并
- 從包含塊頂部水平方向排列
- 排列情況和浮動與否會改變行盒的高度
- 當一個行盒被分割,margin,border,padding都不會再有視覺效果了
- 當一個元素浮動之后,它會被移出正常的文檔流,然后向左或者向右平移,一直平移直到碰到了所處的容器的邊框,或者碰到另外一個浮動的元素
- 浮動元素會根據上一個元素的類型判斷位置,如果上一個是浮動的,則跟隨他,放不下就擠到下一行
- 如果上一個是標準流的元素,則浮動元素的相對垂直高度不變,頂部和上一個元素的底部對齊。
- 引入空隙,父元素使用::after偽元素
- 浮動元素限制成BFC,使用overflow:hidden
- clear屬性
層疊關系
在一個層疊上下文中一共可以有7種層疊等級,列舉如下:示例代碼總結
更多專業前端知識,請上 【猿2048】www.mk2048.com
總結
以上是生活随笔為你收集整理的CSS原理解析之模型篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于怎么在手机端实现一个拖拽的操作
- 下一篇: CSS pointer-events属性