我无法将 N 个 div 与全浏览器宽度并排放置
我想要这样。当您调整 div 之间的浏览器空间大小时,必须保持不变,并且 div 必须调整宽度。
|div| |div| |div|
| div | | div | | div |
我无法将 N 个 div 与全浏览器宽度并排放置
我想要这样。当您调整 div 之间的浏览器空间大小时,必须保持不变,并且 div 必须调整宽度。
|div| |div| |div|
| div | | div | | div |
一种解决方案是使用百分比:
div.mydiv {
width: 33%;
display: inline-block;
}
如果这样做,请注意填充:它会增加 adiv
的宽度,可能会导致溢出。如果您仅支持 IE >=8,则可以通过执行此操作来解决此问题
div.mydiv {
width: 33%;
display: inline-block;
-moz-box-sizing: border-box; /* OMG why doesn't Firefox support this yet */
-webkit-box-sizing: border-box; /* Safari below 5.1, including 5 */
box-sizing: border-box;
}
如果你这样做,还有一个可能的问题:div
s 之间的空间。发生这种情况是因为您在它们之间有空文本节点,并且display: inline-block
认为这没关系:以inline
-type 方式布局的元素可以穿插空白文本节点。为了解决这个问题,有一个非常糟糕的 hack:
div.containerOfAllTheDivs {
font-size: 0;
}
div.mydiv {
font-size: 12px; /* or whatever */
/* plus the above stuff */
}
这使得出现在容器内的任何文本(例如空格)都是零大小的,除非它出现在您彼此相邻堆叠的 div 内,在这种情况下它会恢复为12px
. 正如我所说,一个非常糟糕的黑客攻击。但它有效。
更通用的解决方案是新的flexbox 提案,但它仍在大量修改中:在各种浏览器中实现了两个过时的版本,最新的一个截至今天 (2012-05-15) 都没有实现。但是,如果您知道您的确切环境,这可能是一个很好的解决方案。
同样的事情可以使用 CSS3 灵活的盒子样式布局来实现,而且代码非常少。好吧,这取决于您计划支持的浏览器。
现在仅在 webkit 引擎和 mozilla 中支持灵活的盒子布局
如果您需要任意数量的 div,您有两种选择:
把它作为一个答案,因为我猜它是有效的,并且可以很好地为你服务。960.gs 和 bootstrap 都为您想要的布局提供了脚手架。960.gs 只是布局,但如果引导程序适合您,您可以在他们的网站上对其进行自定义,以获得处理布局的部分。引导程序的一个警告,我还没有找到一种方法来删除 div 列上的左边距。960.gs 包括将alpha
和分别omega
设置margin-left
为margin-right
0 的类。当我使用它时,我必须将它们添加到引导程序中。
使用其中一个脚手架将为您节省大量时间和精力。如果您稍后必须将代码交给其他人,或者甚至只是让其他人与您一起工作,那么使用脚手架也将帮助他们处理您的代码。