1. 程式人生 > >CSS之盒子模型

CSS之盒子模型

12px overflow 都是 padding ash ted markdown style 文字

行高

  • 瀏覽器默認文字大小:16px
  • 行高是==基線與基線==之間的距離
  • 行高=文字大小+上下邊距
  • 行高的單位
單位 文字大小
px 20px 20px
em 20px 40px
% 20px 30px
2 20px 40px

總結:單位除了像素以外,行高都是與文字大小乘積。

行高單位 父元素文字大小 子元素文字大小 行高
40px 20px 30px 40px
2em 20px 30px 40px
%150 20px 30px 30px
2 20px 30px ==60px==

總結:不帶單位時,行高是和子元素文字大小相乘,em和%都是和父元素文字大小相乘

盒子模型

邊框 (border)

  • border-top-style:solid(實線)/dotted(點線)/dashed(虛線)
  • border-top-color
  • border-top-width
        .box{
            width: 300px;
            height: 390px;
            background-color: red;
            border-top-style: solid;
            border-top-color: green;
            border-top-width: 5px;

            border-bottom-style: solid;
            border-bottom-color: yellow;
            border-bottom-width: 15px;
        }

邊框屬性連寫

border-top:red solid 5px;

特點:沒有順序要求,線型為必寫項。

四個邊框值相同的寫法

border:12px solid red;

特點:沒有順序要求,線型為必寫項。

邊框合並

 border-collapse:collapse;

獲取焦點

內邊距(padding)

padding-left | right | top | bottom

  • padding連寫
  1. padding: 20px; 上右下左內邊距都是20px
  2. padding: 20px 30px; 上下20px 左右30px
  3. padding: 20px 30px 40px; 上內邊距為20px 左右內邊距為30px 下內邊距為40
  4. padding: 20px 30px 40px 50px; 上20px 右30px 下40px 左 50px

內邊距撐大盒子的問題

  • 影響盒子寬度的因素
  • 內邊距影響盒子的寬度
  • 邊框影響盒子的寬度
  • 盒子的寬度=定義的寬度+邊框寬度+左右內邊距

繼承的盒子一般不會被撐大

包含(嵌套)的盒子,如果子盒子沒有定義寬度,給子盒子設置左右內邊距,一般不會撐大盒子。

外邊距(margin)

margin-left | right | top | bottom

外邊距連寫

  1. margin: 20px; 上下左右外邊距20px
  2. margin: 20px 30px; 上下20px 左右30px
  3. margin: 20px 30px 40px; 上20px 左右30px 下 40px
  4. margin: 20px 30px 40px 50px; 上20px 右30px 下40px 左50px

垂直方向外邊距合並

兩個盒子垂直一個設置上外邊距,一個設置下外邊距,取的設置較大的值。

嵌套的盒子外邊距塌陷

  • 給父盒子設置邊框
  • 給父盒子overflow:hidden; ==bfc 格式化上下文==

行內元素可以定義左右內外邊距,上下的會被忽略掉

CSS之盒子模型