Search code examples
cssfooter

Trouble with footer


Hey I'm learning HTML and CSS and have had succes with footers before, but for some reason this particular project keeps giving me problems with the footer no matter what I try.

I have some floating elements, and have used a wrapper to put them in.

What I want is a Footer that sticks to the bottom of the page at all times. Regardless of content or scrolling behavior.

When I do this, for some reason the footer sticks to the top of the wrapper even though I positioned it outside of the wrapper element in the HTML coding.

#footerBottom {
  position: fixed;
  bottom: 0;
  width: 100%;
  height: 4em;
  background-color: black;

}
<div id="header">
	<title>The Title Of The Website</title>

</div>
<nav>
</nav>

<div id="wrapper">
	<div id="contentLeftOne">

	</div>

	<div id="contentLeftTwo">

	</div>

	<div id="contentLeftThree">

	</div>

	<aside id="sideTop">

	</aside>

	<aside id="sideMiddle">


	</aside>

	<aside id="sideBottom">

	</aside>

</div>

<div id="footerBottom">
	<p>Here Is A Footer But It Isn't Sticking To The Bottom</p>
</div>

When I position it inside the wrapper, it's positioned at the top of the wrapper element.

Am I overseeing something? I googled a bunch but nothing seems to solve it. Do I need to use jQuery? Is it the floating elements that's screwing things up?

Thanks in advance for all that try to help.


Solution

  • I cleaned up your HTML a bit to help get you started.

    For valid HTML, make sure that your li elements are children of a ul (or ol) element.

    Also, <title> is not a valid HTML tag. However, title is a valid attribute for some HTML tags. The <title> tag is used for metadata as part of the document <head> section, for more details, see: http://www.w3.org/TR/html5/document-metadata.html#the-title-element;

    Note that since you are using position: fixed for the #footerBottom, that element will be taken out of the content flow and positioned with respect to the viewport. #footerBottom could appear anywhere in your script and the it would get positioned in the position specified by your CSS rule.

    #footerBottom {
      position: fixed;
      bottom: 0;
      left: 0;
      width: 100%;
      height: 4em;
      background-color: black;
      color: white;
    }
    #wrapper {
      margin-bottom: 4.5em; /* or else you can see it beneath the footer... */
    }
    #wrapper, nav {
      border: 1px dotted blue;
    }
    #wrapper div {
      min-height: 25px;
      background-color: beige;
      margin: 10px 100px 10px 0;
    }
    #wrapper aside {
      width: 50px;
      min-height: 25px;
      background-color: lightblue;
      margin: 10px 0;
    }
    <div id="header">
      <h3>The Title Of The Website</h3>
    </div>
    <nav>
      <ul>
      <li><a href="#">Page1</a></li>
      <li><a href="#">Page2</a></li>
      <li><a href="#">Page3</a></li>
      <li><a href="#">Page4</a></li>
      </ul>
    </nav>
    
    <div id="wrapper">
      <div id="contentLeftOne"></div>
      <div id="contentLeftTwo"></div>
      <div id="contentLeftThree"></div>
      <aside id="sideTop"></aside>
      <aside id="sideMiddle"></aside>
      <aside id="sideBottom"></aside>
    </div>
    
    <div id="footerBottom">
      <p>Here Is A Footer But It Isn't Sticking To The Bottom</p>
    </div>