如何防止填充属性更改 CSS 中的宽度或高度?

Posted

技术标签:

【中文标题】如何防止填充属性更改 CSS 中的宽度或高度?【英文标题】:How do I prevent the padding property from changing width or height in CSS? 【发布时间】:2010-10-21 05:38:41 【问题描述】:

我正在使用DIVs 创建一个站点。除了我创建一个 DIV 之外,一切都在进行中。我像这样创建它们(示例):

newdiv 
    width: 200px;
    height: 60px;
    padding-left: 20px;
    text-align: left;

当我添加padding-left 属性时,DIV 的宽度变为 220px,我希望它保持在 200px。

假设我创建了另一个DIV,名为anotherdiv,与newdiv 完全相同,并将其放在newdiv 内,但newdiv 没有填充,anotherdivpadding-left: 20px。我得到同样的东西,newdiv 的宽度将是 220px。

我该如何解决这个问题?

【问题讨论】:

我很遗憾地说,但我喜欢 IE 处理这个问题的方式......对我来说更有意义...... 【参考方案1】:

只需添加box-sizing: border-box;

【讨论】:

这与其他答案已经在这里说的完全一样。【参考方案2】:

添加属性:

-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box;    /* Firefox, other Gecko */
box-sizing: border-box;         /* Opera/IE 8+ */

注意:在 Internet Explorer 8 以下版本中不起作用

【讨论】:

这是一个很好的边框解决方案,但是这对填充有什么帮助呢? 这简直是魔法! - 它修复了我们都知道和讨厌的盒子模型!即让它按照直觉建议的方式工作 - 而不是规范 - 但据我所知也没有破坏任何规范:D这篇文章很好地澄清了它......***.com/questions/779434/… @technicalbloke 你的链接只是回到这个问题。 哎呀,复制粘贴了。这是我要分享的链接...paulirish.com/2012/box-sizing-border-box-ftw 你们中的许多人应该考虑下面的宽度:自动技巧。跨浏览器工作,代码更少等。【参考方案3】:

试试这个

box-sizing: border-box;

【讨论】:

【参考方案4】:

如果您想在不更改 div 大小的情况下缩进 div 中的文本,请使用 CSS text-indent 而不是 padding-left

.indent 
  text-indent: 1em;

.border 
  border-style: solid;
<div class="border">
  Non indented
</div>

<br>

<div class="border indent">
  Indented
</div>

【讨论】:

这是我发现的唯一适用于我的固定宽度 div 的解决方案。不幸的是,box-sizing 并没有阻止 padding 影响宽度,所以非常感谢您指出这个很棒的小属性。【参考方案5】:

width: automargin-left: 20px 在你的newdiv 中添加一个div

从 newdiv 中删除填充。

The W3 Box model page has good info.

【讨论】:

既然可以使用一个 div,为什么还要使用两个 div?【参考方案6】:

只需将您的 div 宽度更改为 160px 如果您有 20px 的填充,它会为您的 div 的宽度增加 40px,因此您需要从宽度中减去 40px 以保持您的 div 看起来正常并且不会因额外的宽度而扭曲并且您的文本都搞砸了。

【讨论】:

这和@rvarcher给出的答案一样。【参考方案7】:

当我添加 padding-left 属性时, DIV 的宽度变为 220px

是的,这完全符合标准。这就是它应该如何工作的方式。

假设我创建了另一个名为 anotherdiv 和 newdiv 完全一样, 并将其放入 newdiv 但 newdiv 没有填充,而另一个div 有 填充左:20px。我也一样 事情,newdiv的宽度将是220px;

不,newdiv 将保持 200px 宽。

【讨论】:

Guffa,这根本不是标准的工作方式。填充绝对不应该影响应用它的元素的尺寸。恕我直言,您是否可能将“填充”与“边距”混淆? 是的,填充肯定会影响元素的尺寸。我觉得是你自己搞糊涂了……你怎么提出margin会影响元素的尺寸? 实际上,你知道我认为我们在某种程度上都是对的。我已经习惯于应对我完全忘记了标准的影响。我在这里找到了一个很好的解释quirksmode.org/css/box.html 所以,我很抱歉 Guffa 先生。但出于实际目的(毕竟这是我们正在谈论的)我的建议仍然很好,不是吗? 嗯,你是对的,因为有一个盒子模型错误,但它不适用于这个问题...... :)

以上是关于如何防止填充属性更改 CSS 中的宽度或高度?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery + CSS。如何计算 innerHTML 的高度和宽度?

更改宽度或高度时如何保留 UIImageView 的宽度:高度比

如何使锚点填充其包含 div 的高度

Div 高度自适应填充父容器

如何删除填充顶部和底部以设置高度和宽度

css教程