Is there a way to justify-align floating HTML elements with CSS?
Essentially, I'm trying to achieve the affect of "text-align:justify" but with floating block elements. I have many blocks that I want to justify-align.
Ie. each line开发者_开发技巧 is horizontally-spaced differently to make sure lengths of each line are the same. (Non-ragged right edge).
Is there a way to do this with CSS? If not, is there a suitable JS library to achieve this? Or is this just infeasible?
If the items are not actually float
ing, you can use position:absolute; left:1em; right:1em
to have CSS calculate the widths of the items for you based on offsets from some positioned parent.
If you are only using float
because you have some block-level items you are trying to make flow, use display:inline-block
on the items instead of floating them. If the parent element has text-align:justify
this should give you the effect (I imagine that) you want.
Here is a simple test showing you the result of inline-block
with text-align:justify
.
Edit: I've updated the simple test to more clearly show that the left and right edges are always aligned except for the last line.
Completing previous answer, if you want to align DOM nodes created programatically (e.g. by using document.createElement and parentElement.appendChild in javaScript), no white space will be added between aligned elements. This can cause non-working of aligment.
On my Google Chrome 56.0.2924.87 and Firefox 51.0.1 (64-bit) browsers, aligment doesn't work if there aren't any white spaces to separate div
elements:
https://jsfiddle.net/jc5qwyaw/
There is an example when I create DOM nodes by javaScript:
https://jsfiddle.net/oa8yeudr/
If you uncomment command wrapDiv.appendChild(document.createTextNode(" "));
, you can see the difference.
Possible solution can be appending a white space text node after div nodes as example shows above.
Only tested on Chrome 56.0.2924.87 and Firefox 51.0.1 (64-bit).
精彩评论