三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之

关于padding增加width的解释
作者:Neoxone    发表时间: 2009年02月27号,星期五     阅读:8,193 次

在一个block元素上使用padding后元素实际的宽度会增加,这是一个常识。

这本来是一个很浅显的道理,但许多初学者考虑的时候却觉得很怪异。

我这里按自己的解释来说明一番。

给个假设情况:一个width:10px的元素,padding:10px;

那么实际宽度就是width+padding-left+padding-right=30px;

假如说padding对宽度无影响,那么width是10px;但是padding在横向的宽度是20px;这样内边距padding>总宽width。

一个元素的内边距却大于这个元素的总宽,显然这是个悖论。

所以说作为内边距的padding是一定要加在宽度之上的。

5 条评论 发表在“关于padding增加width的解释”上

  1. 小马 说:

    还是对宽度的理解不同造成的。

    如果把 width 理解为总宽度,那么没人会把 width 设的比 padding 还要小,所以您说的“悖论”是建立在正确理解 width 基础上的。

    回复

    oneboys 回复:

    @小马, 我的假设并不是建立在正觉理解width基础上的,事实上却是以width为总宽为前提的。如果正确理解width的话,就没有这条悖论。

    可能我文章中说的不大好。

    没错,如果说要将width理解为总宽(border和margin暂不管),padding就需要有一条规则:横向padding不能大于width(姑且不管纵向怎么说)——这也是唯一能避开我之前那个悖论的方法。但是即便w3c同意,也制定了这么一条规则。那么浏览器怎么来表现这条规则呢?当一个设计者,不识规则的写出了象我前面那样width和padding,浏览器如何来判断解释这个错误的写法呢?我不知道ie5那些老古董是怎么办的,要我的话,可能先将padding-left和padding-right加起来,然后和width相比较,如果padding总值>width。那么设置padding=width。如果这样整个元素中除了padding充满整个width之外,已经不留任何余地来放置元素中的内容了。显然这样解释很麻烦,而且还会有问题。所以说现在的浏览器都很明智的将padding加到总宽之上。

    很感谢你来讨论我这篇毫无用处的文章。

    回复

  2. www.g8up.cn 说:

    最近我才关注到这个问题。

    今天研究了一下,是不同的DOCTYPE 声明造成width的含义有所不同。

    可以搜索 IE盒子模型和标准W3C盒子模型

    回复

    ONEBOYS 回复:

    @www.g8up.cn,
    Quirks mode并不在我们的研究范围内。
    我们的代码应保证在标准模式下书写。

    回复

  3. miki 说:

    呵呵,博主的这篇文章不是没有用,至少我稍微理解一点了。虽然还是不太懂

    回复

留下回复

):9:( ):8:( ):7:( ):6:( ):5:( ):4:( ):3:( ):2:( ):20:( ):1:( ):19:( ):18:( ):17:( ):16:( ):15:( ):14:( ):13:( ):12:( ):11:( ):10:(