【问题标题】:CSS percentual padding / margin in border-box边框中的 CSS 百分比填充/边距
【发布时间】:2017-06-21 09:04:55
【问题描述】:

据我了解,使用box-sizing:content-box 以百分比设置元素的填充和边距时,这些将是实际内容区域宽度的百分比。因此,300px 宽图像的 50% 边距,与其填充没有任何关系,将创建 150px 宽边距,因此实际大小为 450px 宽度(+填充)。

现在,当我使用box-sizing:border-box 时,宽度定义为内容+填充+边框。如果我使用百分比在边框框中设置元素的填充,它是否会引用这种不同的宽度定义,从而引用自身?如果不是,它仅指内容的宽度,在这种情况下,内容宽度本身也取决于填充和边框的宽度(内容宽度=(边框框宽度)-边框填充),因此在padding 将引用较小的内容,从而使填充本身再次变小。我理解对了吗?这似乎在这两种情况下填充都会以我自己为基础。我错过了什么?浏览器以什么顺序计算百分比,基于什么(仅内容或实际宽度)?

非常感谢!

【问题讨论】:

标签: css padding percentage


【解决方案1】:

您将box-sizing 设置为什么与如何计算边距和边框的实际大小无关。无论哪种方式都是一样的。

content-box 或 border-box 所做的是控制元素的宽度和高度,以便在由height 和 width。

此外,边框的宽度不能设置为百分比,并且填充基于元素的宽度,而不是内容。

#one {
  box-sizing:content-box; /* default */
  width:100px;
  height:100px;
  padding:10%; /* padding % is a percentage of the element's width */
  border:1px solid red;
  border:10% solid black;  /* Borders can't be set to percentages */
  background:yellow;
  float:left;
}

#two {
  box-sizing:border-box; /* default */
  width:100px;
  height:100px;
  padding:10%; /* padding % is a percentage of the element's width */
  border:1px solid red;
  border:10% solid black;  /* Borders can't be set to percentages */
  background:blue;
  float:left;
}
<div id="one"></div>
<div id="two"></div>

【讨论】:

  • 非常感谢。但是短语“/* padding % is a percent of the element's width */”只适用,因为你设置了宽度:100%,对吧?如上面的答案所述,填充和边距应该相对于父元素的宽度。所以 #one 或 #two 上较小的宽度不应该改变两者的填充?
猜你喜欢
  • 2012-01-27
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 2015-08-12
  • 2012-11-19
  • 2012-11-21
  • 2011-08-25
相关资源
最近更新 更多