CSS - 盒子模型

前言: 盒子模型分为IE盒模型和W3C标准盒模型, IE盒模型指的是IE6之前IE浏览器所识别的盒子模型, IE6之后IE浏览器在标准兼容模式下使用的是W3C标准盒模型, 本文只研究W3C标准盒模型

盒子包括4部分, 从里到外分别是: content(内容)、border(边框)、padding(内边距)、margin(外边距)

W3C标准盒模型

标准盒子模型中的CSS属性

width属性

语法: width : 数值 + 单位

注意点: 指的是内容(content)的宽度

height属性

语法: height : 数值 + 单位

注意点: 指的是内容(content)的高度

border整合属性

语法: border: width style color

注意点: 三个属性值均允许省略(缺失), 但不建议

分类属性:

  1. 按方向(direction)细分: border-topborder-rightborder-bottomborder-left
  2. 按类型(type)细分: border-width(边框大小)、border-style(边框样式)、border-color(边框颜色)

注意点:

  1. 边框的方向属性语法: border-(direction) : width style color

  2. border整合属性实际是同时设置四个方向属性的widthstylecolor

  3. 根据 方向类型 可以继续细分出 border-(direnction)-(type) 12个属性

  4. border-color 不设值, 默认和目标元素的前景色(color)一致

  5. border-style 常用值

    边框样式

padding整合属性

语法: padding: val

可按 方向 细分: padding-toppadding-rightpadding-bottompadding-left

注意点:

  1. 可取值 auto(自动) 或者 具体数值 + 单位
  2. padding整合属性, 设置4个值时, 表示分别设置 上右下左 方向的内边距
  3. padding整合属性, 只设置一个值, 表示同时四个方向的内边距
  4. padding整合属性设置2个值, 即padding : x y , 表示 padding-leftpadding-right 的值为 x, padding-toppadding-bottom 的值为 y
  5. padding整合属性设置3个值, 即padding: left y right, 表示 padding-left 值为 left, padding-right 值为 right, padding-toppadding-bottom 的值为 y

margin整合属性

语法: margin : val

可按 方向 细分: marigin-topmargin-rightmargin-bottommargin-left

注意点:

  1. 可取值 auto(自动) 或者 具体数值 + 单位
  2. margin整合属性, 设置4个值时, 表示分别设置 上右下左 方向的外边距
  3. margin整合属性, 只设置一个值, 表示同时四个方向的外边距
  4. margin整合属性设置2个值, 即margin: x y , 表示 margin-leftmargin-right 的值为 x, margin-topmargin-bottom 的值为 y
  5. margin整合属性设置3个值, 即margin: left y right, 表示 margin-left 值为 left, margin-right 值为 right, margin-topmargin-bottom 的值为 y

box-sizing属性

CSS3属性, 设置元素的盒模型的表现形式

语法: box-sizing : content-box(默认值, 标准盒模型)|border-box(可理解为IE盒模型)

border-box

观察上图可得, 当 box-sizing 设置为 border-box 时:

  1. width 包括 contentpadding-leftpadding-rightborder-leftborder-right
  2. height 包括 contentpadding-toppadding-bottomborder-topborder-bottom

盒子模型的其他属性

border-radius整合属性

设置圆角边框(圆角半径)

语法: border-radius : val

分类属性:

  1. border-top-left-radius : x [y] 左上角
  2. border-top-right-radius : x [y] 右上角
  3. border-bottom-right-radius : x [y] 右下角
  4. border-bottom-left-radius : x [y] 左下角

注意点:

  1. 当使用单位为 % 时, x 相对当前元素width进行计算, y 相对当前元素height进行计算

  2. 只设一个值, 表示水平和垂直半径值一样(非计算值)

  3. border-radius整合属性实际是同时设置4个角的圆角半径, 效果如下

    1. 水平和垂直半径值一样
    border-radius : 35px;
    /* 等同于 */
    border-top-left-radius : 35px;
    border-top-right-radius : 35px;
    border-bottom-right-radius : 35px;
    border-bottom-left-radius : 35px;
    
    border-radius : 35px 25px;
    /* 等同于 */
    border-top-left-radius : 35px;
    border-top-right-radius : 25px;
    border-bottom-right-radius : 35px;
    border-bottom-left-radius : 25px;
    
    border-radius : 35px 25px 15px;
    /* 等同于 */
    border-top-left-radius : 35px;
    border-top-right-radius : 25px;
    border-bottom-right-radius : 15px;
    border-bottom-left-radius : 25px;
    
    border-radius : 35px 25px 15px 5px;
    /* 等同于 */
    border-top-left-radius : 35px;
    border-top-right-radius : 25px;
    border-bottom-right-radius : 15px;
    border-bottom-left-radius : 5px;
    
    1. 水平和垂直方向半径不一样, 设置垂直方向半径, 与水平方向半径赋值效果一样, 最终效果如下
    border-radius : 35px 25px 15px 5px / 5px 15px 25px 35px;
    /* 等同于 */
    border-top-left-radius : 35px 5px;
    border-top-right-radius : 25px 15px;
    border-bottom-right-radius : 15px 25px;
    border-bottom-left-radius : 5px 35px;
    

outline整合属性

在盒子模型(边框外)设置轮廓

语法: outline : width style color

注意点: outline 整合属性和 border 整合属性用法一样

分类属性:

  1. outline-width 用法与 border-width 一样
  2. outline-style 用法与 border-style 一样
  3. outline-color 用法与 border-color 一样
  4. outline-offset : 数值 + 单位 设置轮廓与边框的偏移, 支持负值

outline(轮廓) 与 border(边框) 的区别:

  1. 轮廓不占用实际空间, 即不会影响页面布局

  2. 边框可以通过border-radius属性设置圆角(可以为圆形), 轮廓只能是直角

  3. 轮廓不能单独设置某一边的属性(没有按方向细分的分类属性)

  4. 对于行内级元素, 文本(一定行高内)换行时, 轮廓是连续的, 边框则不连续

    轮廓与边框

box-shadow属性

给盒模型(边框)设置阴影

语法: box-shadow: x y [blur [spread]] [color] [inset]

注意点:

  1. 必须值: x — 水平位置 y — 垂直位置, 均支持负值
  2. 可选值: blur — 阴影距离, 仅正值, 值越大越模糊, 默认为0
  3. 可选值: spread — 阴影尺寸, 支持负值, 需要设置在 blur 后面(即blur需占位), 默认为 border-box的宽高
  4. 可选值: color — 阴影颜色, 默认跟随当前元素前景色(color)
  5. 可选值: inset — 设为内部阴影, 默认为 (outset) 外部阴影
  6. 需要按顺序设置, color 可放在最前或者最后
  7. 可添加多个阴影, 阴影列表用 ( , ) 逗号隔开
  8. 阴影不占实际空间, 即不会影响页面布局

min-width 和 min-height

设置元素的最小宽高, 一般配合width : 数值 + 计算单位使用

语法: min-width : valmin-height : val

计算单位: %、em、rem

max-width 和 max-height

设置元素的最大宽度, 一般配合width : 数值 + 计算单位使用

语法: max-width : valmax-height : val


   转载规则


《CSS - 盒子模型》 Tenderness 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录