【发布时间】:2016-05-05 11:21:01
【问题描述】:
这是我想要的效果:我有一组图块,我想在屏幕上以网格的形式排列,在给定屏幕尺寸的情况下,尽可能多的图块。然后,我希望整个块居中,即在安装尽可能多的瓷砖后剩余的任何空间,我想要将一半左右分开。或者,如果没有足够的瓷砖来填充宽度,我希望将剩余空间分开。
例如,让我们将每个图块表示为“XXXX”。我们之间有一些空间,我将用“-”表示。假设我们有五个瓷砖。所以,在一个非常宽的屏幕上,我们可能会看到:
---XXXX-XXXX-XXXX-XXXX-XXXX---
在较窄的屏幕上:
--XXXX-XXXX-XXXX-XXXX---
--XXXX------------------
更窄:
-XXXX-XXXX-XXXX-
-XXXX-XXXX------
等等
瓷砖是 div,里面有各种东西。出于此处的目的,我们可以将它们视为一个原子单元。
我可以通过将它们设置为浮动块或内联块来轻松地包裹它们。我想我可以将它们包装在一个更大的 div 中,然后将该 div 居中在一个外部 div 中。但是没有。
如果我让它们浮动,只要它们都放在一排,它就可以居中。但是一旦需要两排,它们都会向左齐平。看起来 CSS 的布局引擎计算行的宽度,就好像没有换行一样,用它来计算居中,使左右边距为 0,然后在内部块内换行。
我最接近的是使它们成为内联块并将 text-align: center 放在外部块上。但是,最后一行在第一行下方居中,而不是在第一行下方左对齐。
请参阅http://jsfiddle.net/vaLLsudh/ 了解最后一个几乎是解决方案。
【问题讨论】:
-
没有办法像你描述的那样给块一个灵活的宽度。你可以给一个
<div>一个max-width并将其居中,仅此而已。 -
如果我得到你的 Q 正确...我认为你应该使用 JS。
-
您可以针对不同的屏幕尺寸使用
@media部分。 -
@Also 是的。每像素数以千计的
@media... -
CSS when inline-block elements line-break, parent wrapper does not fit new width 的可能重复项。如果包装器更喜欢 5 块宽但可用空间较少,则其宽度将是全部可用空间,而不是行间内容的最大宽度。