【发布时间】:2012-08-16 00:19:24
【问题描述】:
简单地说,我正在开发一个包含列和行的响应式 Web 布局。每个列的宽度都设置为与预定义的总宽度相关:
列宽/总宽度=宽度%
高度是固定的。
现在的问题是,我希望内容宽度是流动的,但边距和填充是固定宽度,如下所示。
代码如下所示:
HTML
<body>
<div id="left">Left</div>
<div id="middle">Middle</div>
<div id="right">Right</div>
</body>
CSS
div {
float: left;
padding: 0.5em;
box-sizing: border-box;
width: 33.3333333333333%; height 5em; line-height: 5em; text-align: center;
}
#left {
background-color: red;
}
#middle {
background-color: green;
}
#right {
background-color: blue;
}
http://jsfiddle.net/langoon/Zxn8E/2/
我已经想到了一些解决方案,但似乎没有一个能满足我的要求:
- 将“box-sizing”设置为“margin-box”。大多数浏览器不支持。
- 使用边框代替边距。以后我可能想要该边框并设置不同的样式。
- 将每个框嵌套在一个外部“div”中。我更喜欢将 DOM 处理的元素数量保持在最低限度。
- 按照此处的建议设置负边距 Fluid column layout with fixed pixel margins between them?。似乎每行都需要一个包装“div”,这可能会给我带来问题。
- JavaScript。不用了。
我是想一边吃蛋糕一边吃,还是有办法做到这一点而没有缺点?
【问题讨论】:
-
您需要哪些浏览器支持?
-
不需要花哨; Safari、Opera、Chrome 和 Firefox,那么单独的 IE 方法应该没问题。
标签: html css responsive-design