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