Niklas
Niklas

Reputation: 69

Header is disappearing when the position is fixed

When I set position:fixed to my header, it disappears, and I cannot figure out why. Here is my code:

html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

#header {
  position: fixed;
}

#header-title {
  float: left;
}

#header-navigation {
  float: right;
}

.content-container {
  width: 100%;
  columns: 3;
  -webkit-columns: 3;
  /* Safari and Chrome */
  -moz-columns: 3;
  /* Firefox */
  column-gap: 0px;
  -moz-column-gap: 0px;
  -webkit-column-gap: 0px;
  column-fill: balance|auto;
}

.post {
  display: block;
  position: relative;
}

.post img {
  width: 100%;
  height: auto;
  display: block;
}

.post h2 {
  position: absolute;
  display: none;
  top: 50%;
  text-align: center;
  margin: 0 auto;
  width: 100%;
  color: #000;
  font-family: 'Raleway', sans-serif;
  font-size: 14px;
  text-transform: uppercase;
  font-weight: 500;
}

.post:hover img {
  opacity: 0.15;
}

.post:hover h2 {
  display: block;
}
<html>

<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

  <div id="header">

    <div id="header-title">
      TITLE
    </div>

    <div id="header-navigation">
      MENU
    </div>
  </div>

  <div class="content-container">

    <div class="post">
      <img src="1.jpeg">

      <h2 class="post">
        Hello
      </h2>

    </div>

    <div class="post">
      <img src="1.jpeg">

      <h2 class="post">
        Hello
      </h2>
    </div>

    <div class="post">
      <img src="1.jpeg">

      <h2 class="post">
        Hello
      </h2>
    </div>

  </div>

</body>

</html>

Upvotes: 4

Views: 9407

Answers (2)

Neo
Neo

Reputation: 11557

Try adding the transform method translateZ(0); , ofcourse this does not fix the issue accross 100% of the browsers, but I've founded it to be 100% effective.

#header {
    position: fixed;
    background-color: red;
    width: 100%;
    height: 20px;
    z-index: 10;
    top: 0;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

Upvotes: 1

Homer6
Homer6

Reputation: 15159

Setting a DOM node as fixed removes it from the normal document flow.

You should use the following CSS to set the header to a fixed height and use that same height as the padding for the content-container (because it won't push the content-container down because it has been removed from normal document flow). Notice both have 20px in this example.

#header {
    position: fixed;
    background-color: red;
    width: 100%;
    height: 20px;
    z-index: 10;
}

.content-container {
    padding-top: 20px;
}

See the jsfiddle for a complete, working example: http://jsfiddle.net/x8vbs/

Upvotes: 4

Related Questions