摘要:屬性語法層面僅對屬性作粗略分類。重點還是概念均決定了布局基礎模式。常規布局的重心與難點。對應標準第章布局上下文格式化上下文在常規流中的框,都屬于一個格式化的上下文中規則脫胎自文字排印,核心概念是。
發端自此。本文細節從略,只做主干梳理。
這個樹主要還是在借CSS2.1標準的骨架,填充進一些新的CSS3標準。要不然CSS3各個module一填進去,這個樹就過于龐大了。
語法本段分類方式部分參考了wiki《Comparison of Layout Engines》。
屬性語法層面僅對屬性作粗略分類。重點還是概念(display, position, float均決定了布局基礎模式)。
值本段整理自標準http://www.w3.org/TR/css3-values
概念 規則匹配根據來源和重要程度,這樣排序:
user agent declarations
user normal declarations
author normal declarations
author important declarations
user important declarations
p.s. User Agent、User和Author即三個不一樣的樣式聲明來源:瀏覽器、用戶和(頁面)作者
同級別比較才會再計算特化程度(specificity)。
tag
class
id
inline style
計算計算階段的各個值:
指定值Specified values:在樣式表中指定的值
將確定一個屬性使用的是聲明值、繼承值還是初始值
計算值Computed values:格式化文檔之前,根據樣式表計算出的值
相對的URI將轉化為絕對URI
float: left將導致計算值為display:block也發生在這一步
相對單位em將轉化為px或類似單位(當然,如果font-size中用到了em,則需要到下一步才能算出)
使用值Used values:格式化文檔之后,根據樣式表及層疊關系計算出的值
百分比值轉化為px或類似單位
line-height的相應計算
真實值Actual values:使用值在一些UA中可能不允許被使用,因此還可能發生針對UA的轉化
比如在chrome里面,px不允許有小數,因此就算使用值是33.333px,真實值將是33px。這可能導致一些subpixel bug
比如在kindle的瀏覽器里面,UA本身不支持灰度以外的顏色,因此所有的顏色將會轉化會灰色
布局 塊 盒模型 Box model對應CSS2.1第8章 Box model,十分基礎,介紹的文章很少出問題,就不多說了。
這幾個概念將在“包含塊”里面再次提到:
Margin Edge
Border Edge
Padding Edge
Content Edge
參考:包含塊 Containing block不理解“包含塊”的概念,永遠無法完全理解width:100%、width:auto、top: 0;等究竟是相對何而言的。參考W3Help《包含塊( Containing block )》:
參考:替換元素與非替換元素 Replaced Element & Non-replaced Element替換元素,定義見W3C《第三章:定義》。在W3C的第十章有專門針對替換元素的定位進行闡述。
內容區塊超出CSS格式化模型
大多有一些固有寬/高/比例
視口 Viewport參見quirksmode的《兩個視口的故事【1】、【2】》。
Visible Viewport
Layout Viewport
布局體系 Positioning布局體系,決定元素出現在哪里及相互影響的方式。
常規布局CSS2.1的重心與難點。
本部分網絡非常多謬誤,很容易被各路水貨帶進坑。
最好參照W3Help《CSS 定位體系概述》和后面幾章,對應標準CSS2.1《第9章 Visual formatting model》,《第10章 Visual formatting model details》來理解。
常規布局又分為三大塊:
Normal Flow
出現inline-box、line-box、block-box的概念,同時又提出了BFC和IFC。
Float
Absolute positioning
普通流的高度計算流程,可一窺各個box影響布局的方式:
根據 "line-height" 屬性計算出每個行內元素的inline-box高度;
根據 "vertical-align" 屬性計算出每個inline-box的垂直對齊方式;
line-box的高度是垂直對齊排列最上面inline-box的頂邊和最下邊inline-box的底邊距離;
如果inline-box字號設置大于行內框的 "line-height" 設置,文字將溢出當前line-box,他可能造成多行時文字相互覆蓋;
在沒有其他塊級內容的情況下,整個block-box的高度取決于多個line-box累計的高度
每個計算出的行框在垂直高度上排列沒有間隙
表格布局很復雜,對外部的影響可屬于Normal Flow,內部又區別于Normal Flow元素相互影響的方式。對應標準CSS2.1《第17章 Tables》
Flex布局 上下文 格式化上下文 Formatting Context在常規流中的框,都屬于一個格式化的上下文中:
IFC:Inline Formatting Context
規則脫胎自文字排印,核心概念是vertical-align、line-height。
BFC:Block Formatting Context
這個概念的細則可見Smallni的《hasLayout && Block Formatting Contexts》
決定元素有重合時的相互覆蓋情況。
CSS2.1時期的規則可參考W3Help《分層的顯示( Layered presentation )》
進入CSS3以后,Stacking Context不僅僅由z-index創建,而這導致了它的復雜性。可參考MDN《The stacking context》。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111091.html
摘要:文件的編碼格式頁面的編碼格式設置當前頁面的編碼格式在瀏覽器運行當前頁面時,告訴瀏覽器當前的編碼格式字符集概念存放所使用的所有的字符漢字分類美國歐洲中國萬國碼主要使用計算機的存儲方式利用二進制方式和中國存儲將 文件的編碼格式 - UTF-8 HTML頁面的編碼格式 - UTF-8 設置當前HTML頁面的編碼格式 在瀏覽器運行當前HTML頁面時,告訴瀏覽器當前的編碼格式 字符...
摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...
摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...
閱讀 1912·2021-11-24 09:39
閱讀 2140·2021-09-22 15:50
閱讀 2009·2021-09-22 14:57
閱讀 705·2021-07-28 00:13
閱讀 1068·2019-08-30 15:54
閱讀 2362·2019-08-30 15:52
閱讀 2688·2019-08-30 13:07
閱讀 3791·2019-08-30 11:27