CSS----vertical-align,line-height基礎知識整理

(一)vertical-align:指定行內元素(inline)或表格單元格(table-cell)元素的垂直對齊方式(注意行內元素與單元格元素
在這裏插入圖片描述
vertical-align 屬性指定爲下面列出的值之一。
(1)行內元素的值

/* Keyword values */
//相對於父元素
vertical-align: baseline; //使元素的基線與父元素的基線對齊。
vertical-align: sub;//使元素的基線與父元素的下標基線對齊。
vertical-align: super;//使元素的基線與父元素的上標基線對齊。
vertical-align: text-top;//使元素的頂部與父元素的字體頂部對齊。
vertical-align: text-bottom;//使元素的底部與父元素的字體底部對齊。
vertical-align: middle;//使元素的中部與父元素的基線加上父元素x-height(譯註:x高度)的一半對齊。

//相對行的值,沒有基線的元素,使用外邊距的下邊緣替代。
vertical-align: top;//使元素及其後代元素的頂部與整行的頂部對齊。
vertical-align: bottom;//使元素及其後代元素的底部與整行的底部對齊。

/* <length> values 使元素的基線對齊到父元素的基線之上的給定長度。可以是負數。 */
vertical-align: 10em;  
vertical-align: 4px;

/* <percentage> values 使元素的基線對齊到父元素的基線之上的給定百分比*/
vertical-align: 20%; 
//此百分比基於line-height的百分比,基數是line-height的值,可以是負數

/* Global values */
vertical-align: inherit;
vertical-align: initial;
vertical-align: unset;

(2)表格單元格的值

baseline (以及 sub, super, text-top, text-bottom, <length>, <percentage>):使單元格的基線,與該行中所有以基線對齊的其它單元格的基線對齊。
top:使單元格內邊距的上邊緣與該行頂部對齊。
middle:使單元格內邊距盒模型在該行內居中對齊。
bottom:使單元格內邊距的下邊緣與該行底部對齊。
可以是負數。

(二)line-height:用於設置多行元素的空間量,如多行文本的間距。對於塊級元素,它指定元素行盒(line boxes)的最小高度。對於非替代的 inline 元素,它用於計算行盒(line box)的高度。

/* Keyword value */
line-height: normal; //取決於用戶端。桌面瀏覽器(包括Firefox)使用默認值,約爲1.2,這取決於元素的 font-family。

/* Unitless values: use this number multiplied
by the element's font size */
line-height: 3.5;//該屬性的應用值是這個無單位數字乘以該元素的字體大小。計算值與指定值相同。大多數情況下,這是設置line-height的推薦方法,不會在繼承時產生不確定的結果。

/* <length> values */
line-height: 3em;//指定<長度>用於計算 line box 的高度。參考<長度>瞭解可使用的單位。以 em 爲單位的值可能會產生不確定的結果

/* <percentage> values */
line-height: 34%;//與元素自身的字體大小有關。計算值是給定的百分比值乘以元素計算出的字體大小。百分比值可能會帶來不確定的結果

/* Global values */
line-height: inherit;
line-height: initial;
line-height: unset;

如果文字的大小要隨頁面的縮放而變化,請使用無單位的值,以確保行高也會等比例縮放。
在使用行高的值的時候需要注意的是:使用無單位的行高可避免意外結果。長度和百分比線高度有不良的遺傳行爲。
例如:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      width: 18em;
      display: inline-block;
      vertical-align: top;
      font-size: 15px;
    }
    .green {
      line-height: 1.1;
      border: solid limegreen;
      }
    .red {
        line-height: 1.1em;
        border: solid red;
      }
    h1 {
      font-size: 30px;
    }
  </style>
</head>
<body>
    <div class="box green">
        <h1>Avoid unexpected results by using unitless line-height.</h1>
         length and percentage line-heights have poor inheritance behavior ...
       </div>
       
       <div class="box red">
        <h1>Avoid unexpected results by using unitless line-height.</h1>
         length and percentage line-heights have poor inheritance behavior ...
       </div>
       <!-- The first <h1> line-height is calculated from its own font-size   (30px × 1.1) = 33px  --> 
       <!-- The second <h1> line-height results from the red div's font-size  (15px × 1.1) = 16.5px -->
</body>
</html>

當子元素沒有自己的line-height的時候:
當父元素的line-height是無單位的數字的時候,子元素的line-height會基於自己的font-size爲基數得到line-height的值
在這裏插入圖片描述
當父元素的line-height是百分比或者長度單位的的時候,子元素的line-height會基於父元素的font-size爲基數得到line-height的值
在這裏插入圖片描述
當父元素的line-height的值時長度,同時單位是em的時候,產生不確定的結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章