Search code examples
htmlcsshyperlinkparallax

Links not working on Parallax design


I have a link in the final div (slide4) and it is not working. I've messed around with z-index and positioning but that didn't work.

This is my first time messing around with a parallax design and I'm using a template to familiarize myself with it, but I hit a snag in this and can't figure it out.

Here's the codepen: http://codepen.io/anon/pen/bdGcI

CSS:

 <style type="text/css">

html {
  height: 100%;
  overflow: hidden;
}

`body { 
  margin:0;
  padding:0;
    perspective: 1px;
    transform-style: preserve-3d;
  height: 100%;
  overflow-y: scroll;
  overflow-x: hidden;
  font-family: Oswald;
}`body { 
  margin:0;
  padding:0;
    perspective: 1px;
    transform-style: preserve-3d;
  height: 100%;
  overflow-y: scroll;
  overflow-x: hidden;
  font-family: Oswald;
}
a:link {
    text-decoration: none;
    color: #fff;
}

a:visited {
    text-decoration: none;
    color: #ccc;
}

a:hover {
    text-decoration: underline;
    color: #B22222;
}

a:active {
    text-decoration: underline;
}

h1 {
   font-size: 550%
}

h2 {
   font-size: 250%
}

p {
  font-size: 140%;
  line-height: 150%;
  color: #333;
}
p2 {
  font-size: 300%;
  line-height: 150%;
  color: #fff;
}

.slide {
  position: relative;
  padding: 25vh 10%;
  min-height: 100vh;
  width: 100vw;
  box-sizing: border-box;
  box-shadow: 0 -1px 10px rgba(0, 0, 0, .7);
    transform-style: inherit;
}

img {
  position: absolute;
  top: 50%;
  left: 35%;
  width: 320px;
  height: 240px;
  transform: translateZ(.25px) scale(.75) translateX(-94%) translateY(-100%) rotate(2deg);
  padding: 1px;
  border-radius: 10px;
  background: rgba(240,230,220, .7);
  box-shadow: 0 0 1px rgba(0, 0, 0, .7);
}

img:last-of-type {
  transform: translateZ(.4px) scale(.6) translateX(-104%) translateY(-40%) rotate(-5deg);
}

.slide:before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left:0;
  right:0;
}

.title {
  width: 50%;
  padding: 2%;
  border-radius: 5px;
  background: rgba(240,230,220, .7);
  box-shadow: 0 0 8px rgba(0, 0, 0, .7);
}

.slide:nth-child(2n) .title {
  margin-left: 0;
  margin-right: auto;
}

.slide:nth-child(2n+1) .title {
  margin-left: auto;
  margin-right: 0;
}

.slide, .slide:before {
  background: 50% 50% / cover;  
}

.header {
  text-align: center;
  font-size: 175%;
  color: #fff;
  text-shadow: 0 4px 4px #000;
}
.header2 {
  text-align: center;
  font-size: 175%;
  color: #fff;

}

#title {
  background-image: url("bg2");
   background-attachment: fixed;  
}

#slide1:before {
  background-image: url("bg3");
  transform: translateZ(-1px) scale(2);
  z-index:-1;
}

#slide2 {
  background-image: url("bg4");
  background-attachment: fixed;
}

#slide3:before {
  background-image: url("bgbg");
  transform: translateZ(-1px) scale(2);
  z-index:-1;
}

#slide4 {
  background: #222;
}

</style>
</head>

HTML in question:

    <div id="slide3" class="slide">
  <div class="title">
    <h2>Music</h2>
    <p>words words words.</p>
  </div>
</div>

<div id="slide4" class="slide header2">
   Final Page <a href="link in question">Link</a>.
</div>

Solution

  • Because :before pseudo class is causing an overlay over the content as you have written

    .slide:before {
      content: "";
      position: absolute;
      /*top:0;*/ /*remove this */
      bottom: 0;
      left:0;
      right:0;
    }
    

    Code pen Demo