再次認識 vertical align

2021-09-17 06:22:35 字數 2826 閱讀 7425

css中的基礎知識,上次在刷 segmentfault 遇見了乙個相關的問題有再次看過 vertical-align 的描述。今天自己也遇見乙個類似的問題,再次深入學習一下。

vertical-align 用來指定行內元素(inline)或**單元格(table-cell)元素的垂直對齊方式。

無論當初起跑的時候你學的是英語還是拼音,最後你還能記得英語的26個字母用拼音的方式怎麼讀嗎?所以這個時候我就可以裝一裝了,我不是學的拼音。

由於後文學習的知識會涉及到小學知識,作為小學學霸的我開始發車了,沒上車的趕快上車。

大致畫了乙個四線三格然後寫了26個字母。總結了一些寫法上面的規則如下:

vertical-align 的預設值是 baseline,可以選擇的值有baseline | sub | super | text-top | text-bottom | middle | top | bottom | 百分數 | 固定值。

vertical-align: baseline; 預設值情況下,元素基線與父元素的元素基線對齊。

父元素內的字母基線剛剛按照我畫的第三條線為基線,的基線與父元素的基礎對齊,高度(15px)不足父元素基線到頂部的高度。

如果我試著不限制的高度不限制(50px),接下來會發現父元素被撐高了。但是頂部與父元素頂部平齊,底部與父元素內的文字的第三條基線對齊(畫的基線只是作為參考)。

如果去掉小寫字母gpqy會發現與div的底部還是會存在乙個距離

通過上兩圖的對比,能發現我之前遇見的問題,就是img放置在div中,div的高度會比的高度高3px,3.5px,4px等情況。因為第三格的距離還是存在,也就能理解之前的有一種解決方案,如果div中不存在文字,直接設定font-size: 0;。但瀏覽器有最小字型限制,也就不是那麼好的解決方案了。

vertical-align: sub; 元素的基線與父元素的下標基線對齊。(底部高度合適,內容沒有被擠出四線格)

vertical-align: super; 元素的基線與父元素的上標基線對齊。(頂部高度不夠,內容被擠出了四線格)

vertical-align: text-top; 元素頂端與父元素字型的頂端對齊。

vertical-align: text-bottom; 元素底端與父元素字型的底端對齊(為了與上面的super區分開來,給父元素加了乙個高於本身高度的 line-height)。

vertical-align: middle; 元素中線與父元素的小寫x中線對齊。

vertical-align: top; 元素及其後代的頂端與整行的頂端對齊。

vertical-align: bottom; 元素及其後代的底端與整行的底端對齊。

這裡以父元素中的 y 作為參考直接的可以看出給 img 新增 top/bottom/middle 的情況。如果父元素設定了行高會出現什麼情況呢?

為什麼設定 vertical-align: middle; 能解決高度問題?

舉例:

預設的vertical-align: baseline; 因此會在img與div底部之間有第三格中超出的內容的距離,這個具體的距離和字型的大小也有關係。如果設定為vertical-align: middle; 後,在父元素內是居中的,此時的高度如果大於內容的高度的時候,父元素的高度就會剛好等於的高度。

為什麼父元素設定 line-height 後 vertical-align: bottom; 會出現如下情況?

這種情況應該是最糟糕的,設定line-height後父元素的基線不那麼固定了,但是還是以父元素內文字字型的基線相關,並且隨著字型的大小的變化而變化,當字型大小為0的時候才正好與父元素的底部對齊。

**元素中我們用到垂直居中的地方應該是比較多的,對於table元素或者是table樣式均可以正常向上面的行內元素一樣設定對齊方式。

vertical-align: top; 單元格的內邊距的上邊緣與行的頂端對齊。

vertical-align: middle; 單元格垂直居中。

vertical-align: bottom; 單元格的內邊距的下邊緣與行的底端對齊。

知識點小,但是真正理解或者說遇見類似對齊的問題問題依然是問題,仔細理解了,下次應該能很好的面對問題了吧。

再次認識閉包

1 官方一點說,能夠讀取其他函式內部的區域性變數的函式,即為閉包。抓住幾個點 2 從表現上來認識 乙個函式a裡定義了另乙個函式b,b讀取了a的區域性變數 3 從特性上去認識 函式內定義的區域性變數,會隨著函式的執行完畢而被銷毀,記憶體被 但是在閉包存在的情況下,區域性變數被閉包函式引用,因此沒有被立...

再次認識this關鍵字

1 定義乙個cat類,如下 public class cat public string getname public void setname string name public string getcolor public void setcolor string color 2 測試類 pu...

再次認識mysql(六)觸發器

觸發器 trigger 進行資料庫開發時,有 當某些資料變化時,希望其他相關資料改變 的需求 利用觸發器 能夠完成這樣的動作 觸發器是一類特殊的事務,可以監視某種資料操作 insert update delete 並觸發相關操作 insert update delete 使用觸發器不僅可以簡化程式,...