Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

div content margin pushing container

Tags:

html

css

I'm running into an issue that's really baffling me.

I have a container that I want to apply a background to an position it in the top right of the browser screen. The div inside has a top margin of 4em and this is pushing the container div.

CSS:

#container {
background: transparent url("../images/house-bg.png") top right no-repeat scroll;
}

#wrapper {
    background: #FFF;
    width: 960px;
    height: 600px;
    margin: 4em auto 0;
    border: 10px solid #C3CF21;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
    -moz-box-shadow: 0 0 25px #444;
    -webkit-box-shadow: 0 0 25px #444;
    box-shadow: 0 0 25px #444;
}

HTML:

<div id="container">
        <div id="wrapper">
            <div id="header">

            </div>
            <div id="main">

            </div>
        </div>
        <div id="footer">
            &copy; Copyright <?php echo date("Y");?> Company, Inc.
        </div>
    </div>

I want the margin of the wrapper to be inside the container div instead of outside.

I've tried multiple display properties and position properties to no avail. The only thing that fixes it is inserting an "&nbsp;" before the start of the #wrapper but there's got to be a CSS fix to this.

like image 403
jef2904 Avatar asked May 29 '10 00:05

jef2904


People also ask

What does margin 10px 5px 15px 20px mean?

margin: 10px 5px 15px 20px; top margin is 10px. right margin is 5px. bottom margin is 15px. left margin is 20px.

How do you prevent margin collapse?

How to Avoid Margin Collapse. First, remember that margins should preferably be used to increase the distance between sibling elements, not to create spacing between a child and a parent. If you need to increase space within the Flow layout, reach first for padding if possible.

How do I give a container a margin in CSS?

Just add a second class to the container-fluid element. Just name the class as you like. Left and right margins are pretty high, since margin-left; auto and margin-right: auto are responsible for the horizontal centering of your div-element. It's best practice to not modify the bootstrap basic classes.

Can a div have a margin?

div s are used to create what used to be known as layers, and can be used as a replacement for tabled layout. We get down to that fully in CSS Layout. Default margins, borders and padding are all 0, so when you wrap a div around some text, there is no space between its edges and the text.


1 Answers

You can add overflow:hidden in order to "close" the context within the #container div.

Here, http://jsfiddle.net/kQsPR/ try to remove overflow:hidden and it will behave as you describe.

This behavior is specified here: http://www.w3.org/TR/CSS2/visuren.html#block-formatting

In a block formatting context, each box's left outer edge touches the left edge of the containing block (for right-to-left formatting, right edges touch). This is true even in the presence of floats (although a box's line boxes may shrink due to the floats), unless the box establishes a new block formatting context (in which case the box itself may become narrower due to the floats).

And this is exactly what "overflow" other than "hidden" is capable of (establishing new formatting context), you could also do that by adding border-top to your #container element, for example.

like image 138
Misha Reyzlin Avatar answered Sep 18 '22 06:09

Misha Reyzlin