Xolve
Xolve

Reputation: 23200

Avoid overflowing of boxes to box below

In the given HTML markup below the middle row pink boxes overflow to the gray box below it. How can I make it certain that the gray box always remain blow the pink boxes. Also here is the link to the html page: http://pastehtml.com/view/axc3iain8.html

<html>
    <head>
        <title>Page 3</title>

        <style type="text/css">
            body {
                width: 1000px;
                margin-left: auto;
                margin-right: auto;
            }

            #header {
                height: 200px;
                margin: 2px;
                margin-bottom: 10px;
                font-family: Arial,Helvetica,sans-serif;
                font-size: XX-large;
                background: gray;
            }

            .snip_list {
                min-height: 100px;
                margin: 25px auto;
            }

            .snippet {
                width: 323px;
                float: left;
                margin: 5px;
                font-size: small;
                background: lightpink;
                display: inline;
            }

            #para_middle {
                margin-top: 10px;
                background: gray;
            }
        </style>
    </head>

    <body>
        <div id="header">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
        </div>

        <div class="snip_list">
            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>

            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>

            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>
        </div>

        <div id="para_middle" class="para">
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
                irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
                pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
                deserunt mollit anim id est laborum.</p>
        </div>

        <div class="snip_list">
            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>

            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>

            <div class="snippet">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor</p>
            </div>
        </div>
    </body>
</html>

Upvotes: 0

Views: 101

Answers (5)

Kerrek SB
Kerrek SB

Reputation: 477070

The problem is that your snippets are floating, hence they're outside the normal flow. You need to make the subsequent elements clear. A nice way to achieve this is by adding an invisible clearing block after the ambient element using CSS:

.snip_list:after { content: "."; visibility: hidden; display: block; clear: both; }

Upvotes: 1

Brombomb
Brombomb

Reputation: 7076

adding a clear:both to the #para_middle will fix this issue. Clear will ensure that elements do not overlap on floated elements. Clear left will ensure that the left edge is clear of floated elements. Clear right will check right, and clear both will check both left and right.

Upvotes: 1

Alex
Alex

Reputation: 9031

Simple add the following to .snip_list

clear:both;

I've coded it up for you here - http://jsfiddle.net/ajthomascouk/EPzWE/

Upvotes: 1

roberkules
roberkules

Reputation: 6605

add <br clear="left" /> after each "row"

or:

.fix {
    clear:left;
    height:1px;
    margin:-1px 0 0;
    overflow:hidden;
}

<div class="fix"></div>

Upvotes: 0

Juan Sebastian Totero
Juan Sebastian Totero

Reputation: 505

You could give

overflow:hidden

to div.snip-list. It should keep in place the container mantaining the margins.

Upvotes: 3

Related Questions