填充/保证金百分比 - 可能的CSS错误?

时间:2013-03-07 17:54:16

标签: css css3

所以我正在忙着制作一个水平滚动的网站。我们所说的容器divarea类。它的宽度是可变的,同样地,div的平均高度在传统网站上也是可变的。

我的网站是“垂直响应”所以我使用了很多百分比值,包括高度,就像在普通网站上使用百分比宽度一样。

问题在于,当我在div.area上使用百分比填充/边距时,即使设置padding-top,它也会根据div的宽度而不是高度来计算百分比。 / p>

这类似于尝试在普通网站的padding-left上设置百分比body,并根据网站的高度计算填充。这是疯狂的,完全不直观。

这是一个已知问题吗?还是故意的?是否有任何CSS的解决方案。我不想使用JS或其他东西来解决这样的事情我宁愿在em中设置填充

2 个答案:

答案 0 :(得分:4)

W3C标准规定paddingsmargins的任何百分比都是元素宽度的百分比,而不是高度:

  

百分比是根据宽度计算的   生成的框包含块。请注意,这是真的   'margin-top'和'margin-bottom'也是如此。如果包含块的话   width取决于此元素,然后生成的布局未定义   在CSS 2.1中。

然而,topbottom位置是由容器高度决定的,但是;)没有单一的CSS方法可以做到,但如果你愿意投入一些JS ,这完全有可能。

我能想到的一些解决方案(非详尽列表):

  1. 从顶部移位50%(仅限CSS),然后通过负上边距偏移,该上边距是元素自身高度的一半(基于JS的计算)

  2. 在确定容器高度后,通过JS计算顶部和底部填充/边距

答案 1 :(得分:0)

偶然发现了同样的问题。解决方案对我有用:

不要设置宽度/高度并使用

.percent10 {
  top: 10%;
  left: 10%;
  bottom: 10%;
  right: 10%;
}