问题 有没有办法证明 - 使用CSS对齐浮动HTML元素?


本质上,我试图实现“text-align:justify”的影响,但是使用浮动块元素。我有很多块我想证明 - 对齐。

IE浏览器。每条线的水平间距不同,以确保每条线的长度相同。 (非粗糙的右边缘)。

有没有办法用CSS做到这一点?如果没有,是否有合适的JS库来实现这一目标?或者这只是不可行的?


1406
2017-12-06 22:44


起源

如果您发布了迄今为止所做的事情的样本,或者您想要实现的模型,这将有所帮助。 - Phrogz
这些街区是什么?图片?另外,它们的高度是否相等? - Šime Vidas
如果您在块上定义display:inline-block而不是浮动它,我会工作。 - Šime Vidas


答案:


如果物品实际上不是 floating,你可以使用 position:absolute; left:1em; right:1em 让CSS根据某些定位父项的偏移量为您计算项目的宽度。

如果您只是使用 float 因为你有一些块级项目,你试图使用,使用 display:inline-block 在项目而不是浮动他们。如果父元素有 text-align:justify 这应该会给你你想要的效果(我想象)。

这里有一个 简单的测试 告诉你结果 inline-block 同 text-align:justify

编辑:我已经更新了简单的测试,以更清楚地显示左边和右边总是对齐,除了最后一行。


13
2017-12-06 22:48



演示的变化: jsfiddle.net/mfmfR/2 - Šime Vidas
这是预期的效果,但它在IE7中不起作用。我已经为IE7修改了它(jsfiddle.net/mfmfR/3),我认为这可能是我正在寻找的答案。我将不得不仔细检查这实际上适用于我现有的代码。谢谢指针! - rocketmonkeys
这是有效的,但有一点问题:最后一行不对齐,有没有解决方案,如完全合理? - Botond Vajna
@BotondVajna您可以通过添加来创建完全对齐 #wrap:after {content:""; display:inline-block; width:100%}。这里的 一个演示。 - Phrogz


完成上一个答案,如果要对齐以编程方式创建的DOM节点(例如,通过在javaScript中使用document.createElement和parentElement.appendChild),则不会在对齐的元素之间添加空格。这可能导致对齐无法工作。

在我的Google Chrome 56.0.2924.87和Firefox 51.0.1(64位)浏览器上,如果没有任何空格可以分开,则对齐无效 div 内容:

https://jsfiddle.net/jc5qwyaw/

我通过javaScript创建DOM节点时有一个例子:

https://jsfiddle.net/oa8yeudr/

如果取消注释命令 wrapDiv.appendChild(document.createTextNode(" "));,你可以看到差异。 可能的解决方案是在div节点之后添加空白文本节点,如上所示。

仅在Chrome 56.0.2924.87和Firefox 51.0.1(64位)上测试过。


1
2018-02-07 18:27