国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

行內(nèi)格式化上下文(Inline formatting contexts)

impig33 / 1355人閱讀

摘要:如果該屬性值為,用戶代理可能會拉伸行內(nèi)盒不包括和盒里的空白和字間距與,,行內(nèi)盒一個是一個特殊的行內(nèi)級盒,其內(nèi)容參與了它的包含行內(nèi)格式化上下文當(dāng)一個超出一個的寬度時,它會被分成幾個盒,并且這些盒會跨多分布。

IFC布局規(guī)則:

在一個行內(nèi)格式化上下文中,盒是一個接一個水平放置的,從包含塊的頂部開始

這些盒之間的水平marginborderpadding都有效

盒可能以不同的方式豎直對齊:以它們的底部或者頂部對齊,或者以它們里面的文本的基線對齊

行盒(line box)

包含來自同一行的盒的矩形區(qū)域叫做行盒(line box)

line box的寬度由包含塊float情況決定,一般來說,line box的寬度等于包含塊兩邊之間的寬度,然而float可以插入到包含塊和行盒邊之間,如果有float,那么line box的寬度會比沒有float時小

line box的高度由line-height決定,而line box之間的高度各不相同(比如只含文本的line box高度與包含圖片的line box高度之間)

line box的高度能夠容納它包含的所有盒,當(dāng)盒的高度小于行盒的高度(例如,如果盒是baseline對齊)時,盒的豎直對齊方式由vertical-align屬性決定

當(dāng)一行的行內(nèi)級盒的總寬度小于它們所在的line box的寬度時,它們在行盒里的水平分布由text-align屬性決定。如果該屬性值為justify,用戶代理可能會拉伸行內(nèi)盒(不包括inline-tableinline-block盒)里的空白和字(間距)

line box與float,vertical-align,text-align

行內(nèi)盒(inline box)

一個inline box是一個(特殊的)行內(nèi)級盒,其內(nèi)容參與了它的包含行內(nèi)格式化上下文

當(dāng)一個inline box超出一個line box的寬度時,它會被分成幾個盒,并且這些盒會跨多line box分布。如果一個inline-block無法分割(例如,如果該inline box含有一個單個字符,或者特定語言的單詞分隔規(guī)則不允許在該inline box里分隔,或如果該inline box受到了一個值為nowrap或者prewhite-space的影響),那么該inline box會從line box溢出

當(dāng)一個inline box被分割后,marginborderpadding在發(fā)生分割的地方(或者在任何分割處,如果有多處的話)不會有可視化效果

同一個line box里的inline box也可能因?yàn)殡p向(bidirectional)文本處理而被分割成幾個盒

需要盛放(hold)一個行內(nèi)格式化上下文中的行內(nèi)級內(nèi)容時,創(chuàng)建一個line box。不含文本、保留空白符(preserved white space)、marginpadding或者border非0的行內(nèi)元素、其它流內(nèi)內(nèi)容(例如,圖片,inline block或者inline table),并且不以保留換行符(preserved newline)結(jié)束的line box必須被當(dāng)作一個0高度的line box,為了確定它里面所有元素的位置,而其它時候(for any other purpose)必須當(dāng)它不存在

inline box與斷行,溢出

行高(line-height)

如圖,我們就知道了,在CSS中,line-height不是相鄰文本行間上一個baseline與下一文本行baseline之間的距離,而是line box的高度,也就是相鄰文本行間底線的距離

原文鏈接:Deep dive CSS: font metrics, line-height and vertical-align

line-height與可替換元素,非替換元素以及vertical-align

在例1中,決定line box高度的是line-height值,但是實(shí)際上是content area以及vertical spacing決定的,line-height=content area+vertical spacing

需要注意的是,content area不等于font-size,只有在simsun(宋體)下,兩者相等

通過上面幾個例子,可以得出以下結(jié)論:

計(jì)算line box中每個行內(nèi)級盒的高度時,對于可替換元素,inline-block元素和inline-table元素,這個值就是其margin box的高度;對于inline box,這個值是其line-height

行內(nèi)級盒是根據(jù)其vertical-align屬性豎直對齊的.如果它們是top或者bottom對齊,它們必須對齊得讓line box高度最小化.如果這樣的盒足夠高,存在多個解,而CSS 2.1沒有定義line box基線的位置

line box高度是最高的盒的top與最低的盒的bottom之間的距離

空行內(nèi)元素生成空的inline box,這些盒仍然具有margin,padding,borderline height,并因此會影響這些計(jì)算,就像有內(nèi)容的元素一樣

行高的屬性值
描述
normal 默認(rèn)屬性值.跟著用戶的瀏覽器走,且與font-size關(guān)聯(lián),一般來說normal值接近于line-height:1.2
number 根據(jù)當(dāng)前元素的font-size大小計(jì)算
length 使用具體長度值作為行高值
% 使用百分比值作為行高值,相對于設(shè)置了該line-height屬性的元素的font-size大小計(jì)算
inherit 行高繼承.IE8+

line-height與百分比值

在百分比行高值中,繼承的不是line-height:150%,而是font-size:16pxline-height:150%的行高值24px;

line-height與number值

在number行高值中,line-height會根據(jù)當(dāng)前元素的font-size大小進(jìn)行計(jì)算,可以實(shí)現(xiàn)相應(yīng)的比例縮放,所以一般建議使用number值

行高的屬性值相關(guān)參考

行高與圖片

行高與圖片

在例1中,我們知道了圖片是基于baseline對齊的,所以行高影響的是文本的高度,而不是圖片的高度
在例2中,我們放置了單張圖片,在父容器使用text-align:center,圖片受到影響,原因是strut

對于一個內(nèi)容由內(nèi)聯(lián)級元素組成的塊容器元素,"line-height"指定了元素內(nèi)行盒的最小高度。這個最小高度包含基線上方的最小高度和下方的最小深度,就像每個行盒以一個具有該元素的字體和行高屬性的0寬內(nèi)聯(lián)盒開始。我們把這種假想盒叫做"strut"(這個名字是受TeX的啟發(fā))

后面的幾個例子是圖片去除縫隙的解決方案,分別是:

圖片display:block

圖片vertical-align:bottom

父元素設(shè)置line-height:0 原因是當(dāng)line-height:0時,行盒的基線會上移

行高的實(shí)際應(yīng)用

實(shí)現(xiàn)多行文本水平垂直居中

vertical-align

該屬性會影響由一個行內(nèi)級元素生成的盒的行盒內(nèi)部的豎直定位

默認(rèn)情況下,inline,inline-block以及table-cell可以應(yīng)用vertical-align

描述
length 把該盒提升(正值)或者降低(負(fù)值)這個距離。值"0cm"表示與“基線”相同
% 把該盒提升(正值)或者降低(負(fù)值)這個距離("line-height"值的百分比)。值"0%"表示與“基線”相同
top inline/inline-block元素:元素頂部和整行的頂部對齊,table-cell元素:單元格頂部padding邊緣和表格行的頂部對齊
bottom inline/inline-block元素:元素底部和整行的底部對齊, table-cell元素:單元格底部padding邊緣和表格行的底部對齊
baseline 把盒的基線與父級盒的基線對齊。如果該盒沒有基線,就把bottom margin邊和父級的基線對齊
middle 把該盒的豎直中點(diǎn)和父級盒的基線加上父級的1/2x-height對齊
text-top 把該盒的top和父級的內(nèi)容區(qū)(content area)的top對齊
text-bottom 把該盒的bottom和父級的內(nèi)容區(qū)(content area)的bottom對齊
sub 把該盒的基線降低到合適的位置作為父級盒的下標(biāo)(該值不影響該元素文本的字體大小)
super 把該盒的基線提升到合適的位置作為父級盒的上標(biāo)(該值不影響該元素文本的字體大小)

在數(shù)值/百分比值中,vertical-align可以用負(fù)值,而且百分比值提升或降低對應(yīng)的是line-height

去除圖片空隙的方法除了上面的幾個之外,還包括:

圖片vertical-align:top,vertical-align:middle

line-height為number時,font-size:0

table-cell中,高度不足會使用padding填充

vertical-align:middle與垂直居中

這個例子用到的也是父元素font-size:0,圖片垂直中心點(diǎn)會上移,并與容器垂直中心點(diǎn)重合,但是這種方法有缺陷,因?yàn)槿绻竺嫘枰迦雴栴}的時候,不會顯示出來

vertical-align:middle與垂直居中修改版

這里,我們在圖片后面插入了一個空span并且設(shè)置為vertical-align:middle,兩者都往下偏移,然后垂直中心點(diǎn)重合

vertical-align:text-bottom與表情圖片文字對齊

例1中,baseline對齊表情會略微高過文字
例2中,bottom對齊容易受到其它行內(nèi)元素影響,比方說插入一張vertical-align:top的圖片
例3中,middle需要注意圖片的大小,圖片過大,圖片會相對于文字下沉,而且在IE6/7中有兼容性問題
例4中,text-bottom是比較合適的用法,因?yàn)樗皇苄懈吆推渌袃?nèi)元素影響

vertical-align:text-bottom與baseline

在例1中,圖片下面有個很大的空白區(qū),它的原因是圖片和X與父級的content area底部對齊,而line-height:250px;底部的空白區(qū)是X的下邊距

在例2中,圖片和X都vertical-align:top,也就是與父級的content area頂部對齊,這時,圖片后面的普通文本是line-height:250px的文本,圖片下方的空白相當(dāng)于文本的下邊距

vertical-align與line-height

任意數(shù)目圖片兩端對齊效果未完成

在上面的例子中,最后一行圖片的的空隙明顯要比圖片默認(rèn)情況下的空隙大,這是為什么呢,我們先看一個例子

解釋空隙大的例子

在例1中,我們定義了一個空的inline-block盒以及一個帶字符的inline-block盒,第一個盒子的底邊緣和第二個盒子的baseline對齊,也就是說,空inline-block盒子的底邊緣是它的基線

在例2中,我們設(shè)置了line-height:0,此時,一個0高度的inline-block有一個有高度的字符,所以它的半間距等于負(fù)的字符/2,也就是inline-block會下沉1/2個字符,盒子的上邊緣在字符的中心點(diǎn)上

在CSS標(biāo)準(zhǔn)中是這樣寫的:

"inline-block"(盒)的基線是它的最后一個常規(guī)流中的行盒的基線,除非它沒有流內(nèi)行盒或者它的"overflow"屬性的計(jì)算值不為"visible",此時基線是bottom margin邊

所以,空隙過大的原因是,圖片是baseline對齊的,而line-height:0時,字符X會下沉1/2,這里多出來的空隙是1/2baseline的高度

修復(fù)的方法:

父容器line-height:0,最后一個空inline-block插入一個字符,這時空隙就會消失

元素vertical-top

元素vertical-bottom

任意數(shù)目圖片兩端對齊效果

需要注意的是,如果空inline-block元素使用vertical-align:bottom時,是元素底部與整個行盒底部對齊,也就是說要保證每個多帶帶的元素都設(shè)置vertical-align:bottom

vertical-align與IE6/7

在IE6/7下使用vertical-align圖文一體化,圖片上下留白相等,而現(xiàn)代瀏覽器則不一樣

解決辦法:在圖片后面的文字inline-block

vertical-align實(shí)例

不固定尺寸圖片或多行文字垂直居中

主體元素inline-block

添加一個寬度0高度100%的輔助元素

給這兩個元素vertical-align:middle

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/111969.html

相關(guān)文章

  • CSS中各種布局的背后(*FC)

    摘要:中各種布局的背后,實(shí)質(zhì)上是各種的組合。相反,一些塊容器盒,比如非替換行內(nèi)塊及非替換表格單元格,不是塊級盒。描述元素跟它的后代之間的影響。行盒行盒由行內(nèi)格式化上下文產(chǎn)生的盒,用于表示一行。彈性容器外和彈性項(xiàng)目內(nèi)的一切元素都不受影響。 CSS中各種布局的背后,實(shí)質(zhì)上是各種*FC的組合。CSS2.1 中只有 BFC 和 IFC, CSS3 中還增加了 FFC 和 GFC。 盒模型(Box M...

    miracledan 評論0 收藏0
  • 視覺格式模型(Visual formatting model)

    摘要:塊級盒參與塊格式化上下文。行內(nèi)級盒參與行內(nèi)格式化上下文塊格式化上下文行內(nèi)格式化上下文相對定位浮動盒就是一個在當(dāng)前行向左或向右移動的盒。浮動絕對定位絕對定位模型中,一個盒會有相對于其包含塊的明確偏移,它會從常規(guī)流中全部移除不會影響后面的兄弟。 在可視化格式模型(Visual formatting model)當(dāng)中,文檔樹中的每個元素根據(jù)其盒模型生成0個或多個盒.這些盒的布局由(以下因素)...

    jokester 評論0 收藏0
  • [譯]:BFC與IFC

    摘要:塊級盒參與塊級格式上下文行內(nèi)級盒參與行級格式上下文。兩個相鄰盒子的垂直間距決定于屬性。水平和在這些盒子中被平分。的寬度由浮動情況和它的包含塊決定。當(dāng)一個行內(nèi)盒子被分割,分割發(fā)生則和便沒有了視覺效果。參考神奇背后的原理清除浮動與與 BFC與IFC BFC與IFC的參與者 Boxes in the normal flow belong to a formatting context, wh...

    dayday_up 評論0 收藏0
  • 前端進(jìn)階之什么是BFC?BFC的原理是什么?如何創(chuàng)建BFC?

    摘要:官方說法就是它規(guī)定了用戶端在媒介中如何處理文檔樹。是的包含塊,同時又是的包含塊,不是絕對的。因此稱為匿名盒子。行內(nèi)盒子行內(nèi)級元素會生成行內(nèi)級盒子,該盒子同時會參與行內(nèi)格式化上下文的創(chuàng)建。如果只有一個值指定為,則其使用的值來自相等。 作者:陳大魚頭 github: KRISACHAN 盒模型 The CSS box model describes the rectangular b...

    lowett 評論0 收藏0
  • BFC,包含塊,文檔流,浮動,定位是個啥關(guān)系---CSS視覺格式模型

    摘要:視覺格式化模型瀏覽器在解析渲染我們所寫的內(nèi)容,順序渲染普通文檔流。渲染結(jié)果如下圖這兒有一個知識點(diǎn)文檔流按我的理解就是在瀏覽器渲染顯示的一個模式,這個模式的特點(diǎn)自上而下,從左到右排列規(guī)則。如果不特殊指定,瀏覽器會默認(rèn)當(dāng)前的渲染是按文檔流模式。 CSS視覺格式化模型 瀏覽器在解析渲染我們所寫的html內(nèi)容,順序渲染(普通文檔流)。 1 2 3 4 ...

    huashiou 評論0 收藏0
  • BFC與IFC

    摘要:屬于同一個的兩個相鄰的會發(fā)生重疊。的區(qū)域不會與重疊。計(jì)算的高度時,浮動元素也參與計(jì)算。給添加,觸發(fā)新的,則行內(nèi)級格式化上下文如何生成由的非替換元素生成。元素會位于與與之間,使得寬度縮短。 block-level box: display屬性為block, list-item, table的元素,會生成block-level box。并且參與block fomatting context...

    BlackFlagBin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<