CSS Float and Clear

Float

CSS allows you to "wrap" an element around other. You can do this with the float property.
This property shifts an item horizontally, left or right from its original placement, leaving a blank space in the opposite direction, which will be filled by the next HTML element. But the elements before the floating element will not be affected.
A floated element will move as far to the left or right as it can. Usually this means all the way to the left or right of the containing parent.
If you place several floating elements after each other, they will float next to each other if there is room.
  - Values:   - Syntax:   - Example (Two <div> tags, first with float:right, the second with float:left, and a text content after them.):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>float</title>
 <style type="text/css"><!--
 #dv1 {
  width: 200px;
  float: right;
  border: 2px solid green;
 }
 #dv2 {
  width: 200px;
  float: left;
  border: 2px solid blue;
 }
 --></style>
</head>
<body>
 <div id="dv1">DIV 1, with float: right;</div>
 <div id="dv2">DIV 2, with float: left;</div>
 Text content after the floated DIVs.
</body>
</html>
The first DIV is pushed to the right, leaving a blank space to its left. The second div is pushed to the left in that space, leaving another empty space in its right side, that will be filled by the next item, if fits (here a text content).
  - Result:
DIV 1, with float: right;
DIV 2, with float: left;
Text content after the floated DIVs.

- Absolutely positioned elements ignores the float property.

Clear

The clear property has an action similar to <br> HTML tag that moves to a new row the next element.
When an element is floated it leaves an empty space in the oposite direction. With the "clear" property can be avoided the filling of that blank space by the next item.
The clear property is used to insert a break when encountering a new section of the layout to stop the wrapping effect. It specifies which sides of an element other floating elements are not allowed.
  - Values:   - Syntax:   - Example (A new version of the example above, here is added the clear:right in the "#dv2" selector and a <br /> tag with clear:both before the text content):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>clear</title>
 <style type="text/css"><!--
 #dv1 {
  width: 200px;
  float: right;
  border: 2px solid green;
 }
 #dv2 {
  clear: right;
  width: 200px;
  float: left;
  border: 2px solid blue;
 }
 --></style>
</head>
<body>
 <div id="dv1">DIV 1, with float: right;</div>
 <div id="dv2">DIV 2, with float: left;</div>
 <br style="clear:both" />
 Text content after the floated DIVs.
</body>
</html>
As you can see, the clear property stops the wrapping effect.
  - Result:
DIV 1, with float: right;
DIV 2, with float: left;

Text content after the floated DIVs.