In a wrapper div, the floated elements don't seem to respond to left and right margin settings. Example:
html:
<div id ="wrapper">
<div id = "content"></div>
</div>
css:
#wrapper
{
width: 1000px;
display: block;
margin-left: auto;
margin-right: auto;
overflow: hidden;
}
#content
{
width: 400px;
height: 200px;
display: block;
float: left;
margin-left: 30px;
}
The #content ignores its left margin setting. Why?
@Marcus's answer is good. Another way to fake having margins on a floated element is to put the content inside of another container and use padding:
A more recent CSS technique that works perfectly in this scenario is to use the CSS transform property with a translate X or Y. This acts on the floated element only, so does not have the unintended effect of moving other elements around.
An example transform is this:
Margins do not move floated elements, they "push content away".
If you want to move the floated element, you could give it the following CSS rules:
An alternative is giving the element a transparent border:
If you are just looking to position a div inside of another div, then use absolute positioning: