Category: Blog

CSS Floats basics

What is a float?

When you float an element it becomes a block box. This box can then be shifted to the left or right on the current line. The markup options are “float: left”, “float: right” or “float: none”.

A floated box is laid out according to the normal flow, then taken out of the flow and shifted to the left or right as far as possible. Content can flow down the right side of a left-floated box and down the left side of a right-floated box.

Where will a floated element move to?

Floated boxes will move to the left or right until their outer edge touches the containing block edge or the outer edge of another float.

If there isn’t enough horizontal room on the current line for the floated box, it will move downward, line by line, until a line has room for it.

Do floated items need a width?

You should always set a width on floated items (except if applied directly to an image – which has implicit width). W3C’s Cascading Style Sheets, level 2, CSS2 Specifications states:

“A floated box must have an explicit width…”

If no width is set, the results can be unpredictable. Theoretically, a floated element with an undefined width should shrink to the widest element within it. This could be a word, a sentence or even a single character – and results can vary from browser to browser.

Elements above and below floated elements

Block level elements above a floated element will not be affected by it. However, elements below will wrap around the floated element:

Borders, background images and background color

While content will wrap around a floated element, border, background image and background color will extend underneath.

If you do not want elements below a floated element to wrap around it, you can apply the clear property to the following element using “clear: left”, “clear: right” or “clear: both”.

   border:solid 1px red;