CSS流体布局:基于百分比的margin-top在容器宽度增加时增长

Gre*_*gir 31 css margin fluid-layout responsive-design

我只是学习CSS流体布局和响应式设计,我试图在布局中使用没有px值的所有百分比值.

到目前为止似乎有效,但在一个地方,我看到了一些我没想到的东西.我试图在两个垂直堆叠的div之间放置一个边距,这个div根据容器的高度而变化.当我垂直调整窗口大小时,我希望边距会改变,但如果你水平调整它,它也会增长,这是我不想要的.我错过了什么?

这是一个小提琴.感谢您的帮助.

http://jsfiddle.net/gregir/aP5kz/

Chu*_*ars 51

在CSS中,所有四个边距:和填充:百分比是相对于宽度 ...即使这看起来可能是荒谬的.这就是CSS规范的方式,你无能为力.

你可以用'ex'(或'em')做你想做的事吗?这就是我习惯于看到指定边距/填充的"流动"值的方式......并且它可能比百分比更少问题.(虽然我没有相关的第一手经验,但我怀疑你计算出的百分比值的极长精确度会在以后为你设置浏览器不兼容问题.我的风格是尽可能将CSS百分比限制为整数,或偶尔可能是小数点后的一个或有时甚至两个数字.)

如果你真的想要一个确切的任意大小的空垂直空间,它是容器的一个百分比,那么我想到的第一件事就是一个单独的空<div>,它具有"height:nn%"CSS规范.或许你指定的其他东西已经按照你想要的方式处理垂直尺寸(因为看起来边缘在垂直尺寸调整时根本没有做任何事情).

  • @先生.TA - 我可以看出为什么规范是这样的.如果顶部和底部边距百分比更改为相对于_height_,而左右边距百分比保持相对于_width_,则无法使用百分比指定边距(和填充),但也有_equal_ all四处走走.(这也是保持元素宽高比的奇怪CSS黑客的基础.)这些都是艰难的选择; 在你断定他们只是一个"设计缺陷"之前深吸一口气. (2认同)
  • 巨大的设计缺陷是肯定的。如果您希望边距始终相等,请使用 EM 等单位,它们与字体大小等单一维度相关。与 EM 一样,百分比是相对单位,但与 EM 不同的是,百分比是相对于两个潜在维度——宽度或高度。将其始终相对于宽度来对待,即使在与 HEIGHT 相关的字段上,不仅非常不直观,而且还无法将子元素折叠到 -100% 的边距以使其“像抽屉一样滑”到隐藏它是父母。可怕的,可怕的,可怕的设计缺陷。 (2认同)

归档时间:

查看次数:

36490 次

最近记录:

13 年,5 月 前