Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

CSS CSS Layout Techniques Positioning Schemes Absolute Positioning

Eugene Trofimov
PLUS
Eugene Trofimov
Courses Plus Student 7,504 Points

Strange layout behavior

If you run my code you could see layout mess

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Positioning Schemes</title>
    <meta name="viewport" content="width=device-width">
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <div class="main-wrapper">
        <header class="main-header">
            <h1 class="main-logo"><a href="#">Logo</a></h1>
            <ul class="main-nav group">
                <li><a href="#">Link 1</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
                <li><a href="#">Link 4</a></li>
            </ul>
        </header>
        <div class="main-banner">
            <h1>This is the Main Banner Heading</h1>
            <p>Andouille pork chop pancetta drumstick ground round beef ribs swine brisket ham.</p>
        </div>
        <div class="content-row group">
            <div class="extra-content col">
                <h3>Extra Content</h3>
                <p>Filet mignon turkey flank doner strip steak. Frankfurter ham hock turkey, venison sirloin pig chuck shank capicola hamburger doner spare ribs boudin.</p>
                <hr>
                <p> Drumstick bresaola meatloaf ham hock salami tri-tip landjaeger beef filet mignon biltong boudin turkey.</p>
            </div>
            <div class="primary-content col">
                <h2>Primary Content</h2>
                <img class="feat-img" src="http://lorempixel.com/400/300" />
                <p>Bacon ipsum dolor sit amet chicken pork ground round brisket corned beef ball tip shank tail salami filet mignon ham hock pork belly venison shankle. Pig kielbasa drumstick sausage pork chop boudin. Chicken t-bone salami pork chop, beef ribs kevin ham tri-tip beef venison biltong brisket.</p>
                <p>Venison strip steak meatball chicken, brisket prosciutto sirloin. Capicola drumstick brisket tri-tip salami. Chicken beef jerky, tail turkey prosciutto cow ham sirloin boudin tenderloin. Meatloaf tri-tip turducken brisket andouille, pork belly corned beef fatback hamburger.</p>
            </div>
            <div class="secondary-content col">
                <h3>Secondary Content</h3>
                <p>Strip steak tenderloin kevin swine meatloaf capicola, doner beef turducken pancetta corned beef pork loin shoulder.</p>
                <hr>
                <p>Pork filet mignon leberkas, tail swine venison pancetta turkey shoulder brisket chalkers likes hamburgers.</p>
            </div>
        </div>
        <footer class="main-footer">
            <p>&copy;2014 Example Layout</p>
        </footer>
    </div>
</body>
</html>

CSS

/* Page Styles
================================ */

* {
    -moz-box-sizing: border-box;    
    box-sizing: border-box;
}
body {
    font: normal 1.1em/1.5 sans-serif;
    color: #222;
    background-color: #edeff0;
}

/* Layout Element Colors
================================ */

.main-header       { background-color: #384047; }
.main-logo a       { background-color: #5fcf80; }
.main-nav a        { background-color: #3f8abf; }
.primary-content   { background-color: #caebf6; }
.secondary-content { background-color: #bfe3d0; }
.main-footer       { background-color: #b7c0c7; }

/* Header, Banner and Footer Layout
================================ */

.main-header {
    padding: 15px;
    min-height: 100px;
    /*overflow: hidden;*/
}
.main-nav li {
    margin-top: 15px;
}
.main-logo a, 
.main-nav a {
    display: block;
    color: white;
    text-decoration: none;
    text-align: center;
    padding: 5px 15px;
    border-radius: 5px;
}
.main-footer {
    text-align: center;
    padding-top: 5px;
    padding-bottom: 5px;
}

/* Column Layout
================================ */

.col {
    padding: 20px;
}
.extra-content,
.main-banner {
    display: none;
}

/* Imagery
================================ */

.feat-img {
    width: 100%;
    margin-top: 10px;
    margin-bottom: 10px;
    border: solid 1px;
    padding: 5px;
}

/* Float Clearfix
================================ */

.group:after {
  content: " ";
  display: table;
  clear: both;
}

/* Media Queries
================================ */

@media (min-width: 769px) {

    .main-wrapper,
    .content-row,
    .col{
        height: 100%;
    }

    .main-wrapper {
        width: 95%;
        margin: auto;
    }

    /* Header, Banner and Footer Layout
    ================================ */
/*  .main-logo,
    .main-nav{
        position: relative;
    }
    .main-logo{
        width: 150px;
        top: 20px;
        left: 20px;
    }

    .main-nav{
        bottom: 32px;
        left: 200px;
    }*/

    .main-header{
        position: relative;
    }

    .main-logo,
    .main-nav{
        position: absolute;
    }

    .main-logo{
        top: 20px;
        left: -10px;
    }

    .main-nav{
        bottom: 35px;
        right: 250px;
    }

    .main-nav li {
        margin-right: 6px;
        margin-left: 6px;
        display: inline-block;
    }
    .main-banner {
        background: #dfe2e4;
        text-align: center;
        padding: 35px 15px;
        display: block;
    }

    /* Column Layout
    ================================ */


    .extra-content,
    .main-banner{
        display: block;
    }

    .content-row{
        position: relative;
    }
    .col{
        width: 30%;
        position: absolute;
    }

    .primary-content{
        width: 40%;
        left: 30%;
    }

    .secondary-content{
        right: 0;
    }

    /* Imagery
    ================================ */

    .feat-img {
        width: 50%;
        float: left;
        margin-right: 25px;
    }
}

How can I fix this issue? Thank you

3 Answers

Patrick Koch
Patrick Koch
40,496 Points

Hi Eugene,

did you already checked the w3 validator? http://validator.w3.org/#validate_by_upload

greetings patrick

Eugene Trofimov
Eugene Trofimov
Courses Plus Student 7,504 Points

Yes, in HTML I have only one mistake, it is an alt attribute missing, but it doesn't affect; CSS is absolutely right.

Wayne Priestley
Wayne Priestley
19,579 Points

Hi Eugene,

A fix for your logo is:

.main-logo{
      position:relative;
      display: inline-block;
      top: 20px;
      left: -10px;
    }

Don't forget to remove .main-logo, from the absolute positioning code above it.
I'm going to take a look at the rest now.

Eugene Trofimov
Eugene Trofimov
Courses Plus Student 7,504 Points

To fix logo I simply use this:

.main-header,
    {
        position: relative;
    }

    .main-logo,
    {
        position: absolute;
    }

    .main-logo{
        top: 0px;
        left: 0px;
    }

And what about layout? What it's behavior is so?

Ivan Franzone
Ivan Franzone
7,328 Points

And why that? .main-logo has a wrapper (the header). The header should have position:relative , and child elements (like the logo and the nav) they should have position absolute.

Wayne Priestley
Wayne Priestley
19,579 Points

I thought the logo was one of the issues you were having.

So what is it that you want fixed then?
I know your footer is halfway up your page, attached to the bottom of your main banner. But you have to many elements using relative or absolute positioning to get that to the bottom of your page. I tried for three hours to get it to work before removing all positioning.

I had to remove all relative and absolute positioning to get your site to display the three columns with the footer at the bottom.

For a simple way to position elements exactly where you want them I'd recommend watching some of the tutorials on grids, then build yourself a simple grid.
Positioning is a piece of cake once you get your grid.