CSS: Force float to do a whole new line
I have a bunch of float: left
elements and some are SLIGHTLY bigger than others. I want the newline to break and have the images float all the way to the left instead of getting stuck on a bigger element.
Here is the page I'm talking about : link
If they are all the same size if works beautifully : link
Thanks! (I'd rather not get into javascript or server side scripting if I don't have to)
Solution 1:
Well, if you really need to use float
declarations, you have two options:
- Use
clear: left
on the leftmost items - the con is that you'll have a fixed number of columns - Make the items equal in
height
- either by script or by hard-coding the height in the CSS
Both of these are limiting, because they work around how floats work. However, you may consider using display: inline-block
instead of float
, which will achieve the similar layout. You can then adjust their alignment using vertical-align
.
Solution 2:
I fixed it by removing float:left
, and adding display:inline-block
instead. Haven't used it for images, but should work fine, there, too.
Solution 3:
Use display:inline-block
You may also find vertical-align: top
or vertical-align:middle
useful.
Solution 4:
This is what I did. Seems to work in forcing a new line, but I'm not an html/css guru by any measure.
<p> </p>
Solution 5:
You can wrap them in a div and give the div a set width (the width of the widest image + margin maybe?) and then float the divs. Then, set the images to the center of their containing divs. Your margins between images won't be consistent for the differently sized images but it'll lay out much more nicely on the page.