CSS 盒模型浅谈

本文深入解析了盒模型的定义及属性,包括display、position、float等,并对比了CSS标准模型和IE传统模型下width和height的计算差异。同时,探讨了inline、block、inline-block的区别及其在实际布局中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

盒模型的定义

在浏览器中,每个元素都可以被认为是盒模型。盒模型一般有以下属性:display, position, float, width, height, padding, border, margin.

盒模型一般由 元素内容, padding, border, margin 组成 , 所以又有内盒和外盒的概念。其中内外盒元素的宽高计算如下:

  • 内盒元素宽(高)
    • 内盒元素宽(高) = 元素内容宽(高) + padding宽(高) + border宽(高)
  • 外盒元素宽(高)
    • 外盒元素宽(高) = 元素内容宽(高) + padding宽(高) + border宽(高) + margin宽(高)

tips: 可以看出外盒元素比内盒元素多个 margin 属性。

由于不同浏览器的对于 CSS 实现差异,盒模型又分为 CSS 标准模型 和 IE(IE6 以下版本) 传统模型两种模式。

其中这两种盒模型的主要区别在于对 CSS 的 width(height) 属性的计算方式,计算方式分别如下:

  • CSS 标准模型
    • width(height) = 元素内容宽(高)
  • IE 传统模型
    • width(height) = 元素内容宽(高) + padding宽(高) + border宽(高)

解释: 从以上公式也可以看出 width(height) 在 CSS 标准模型中是直接等于元素内容的宽(高)的,而在 IE 传统模型中是等于元素内容paddingborder 的宽(高)之和的。

tips: 虽然传统的盒模型只有在 IE6 以下的版本中存在,而且目前 IE6 的使用用户非常少,但出于兼容性的考虑还是应该清除这两种模式的区别。另外在 input 中,submit, reset, button 和 select 等元素仍然是基于传统的盒模型的,如果给他们设置 border和padding,它们会向盒内延伸。

当然我们也可以 box-sizing 属性来定义元素盒模型的模式。

box-sizing 有以下三种取值:

  • content-box:CSS 标准盒模型,width(height) 与 元素内容宽(高) 相同。
  • border-box: IE 传统盒模型,width(height) 是计算 border ,padding, 元素内容 的宽(高)之和。
  • inherit:继承父元素的盒模型

inline,block,inline-block 的区别

特性

  • inline:设置宽高无效,margin 只对水平方向有效,padding 在水平和垂直方向都有效,不换行。
  • block:可以有效设置宽高,margin 对水平垂直方向都有效,padding 在水平和垂直方向都有效,换行。
  • inline-block:可以有效设置宽高,margin 对水平垂直方向都有效,padding 在水平和垂直方向都有效,不换行。

元素

  • inline:a, span, i, em, strong, label...
  • block:div, p, h1...h6, ol, ul, li, table, form...
  • inline-block:img, input

position

  • absolute/fixed:不论 inline,block,inline-block,都可以有效设置宽高,都可以有效设置 margin, padding 值,脱离文档流,通过top, right, bottom, left 定位。
  • relative:相对于正常文档流的位置,不改变盒模型的 inline,block,inline-block 特性。
  • static:默认值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值