Jimmy
Jimmy

Reputation: 12487

Changing opacity of header on scroll

I have some code which moves the header image when the user scrolls. It seems to work fine:

<script>
$(window).scroll(function(e) {
                var scrolled = $(window).scrollTop(),
                    header = $('.site-header');

                header.css('top', -(scrolled) * 0.5 + 'px');

                if (scrolled > $(document).height() - $(window).height() - 470) {
                    var scrollPos = scrolled - ($(document).height() - $(window).height() - 470);
                    var position = scrollPos / 10;
                    var opacity = (scrollPos * 1) / 470;
                }
            });
</script>

I'm trying to get the opacity to change as well, so it fades out when I scroll down. This bit doesn't seem to work.

This full code is here:

https://jsfiddle.net/spadez/acz13129/1/

There seems to be something in the code already around opacity but it doesn't change and the console throws no errors so I am a bit stuck.

Upvotes: 0

Views: 282

Answers (1)

MBJH
MBJH

Reputation: 1639

$(window).scroll(function(e) {
  var scrolled = $(window).scrollTop(),
    header = $('.site-header');

  header.css('top', -(scrolled) * 0.5 + 'px');

  var scrollPos = scrolled - ($(document).height() - $(window).height() - 470);
  var position = scrollPos / 10;
  var opacity = ((scrollPos / -1000) - 1.734) * 1.5; // Opacity is in decimals e.g. 0.5
  $('.site-header').css({
    "opacity": opacity,
    "position": position + '%'
  });
});
body {
  margin: 0;
  background: #f1f1f1;
}

header {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: -1;
  height: 500px;
  line-height: 500px;
  text-align: center;
  margin: 0;
  padding: 0;
}

.wrapper-parallax {
  margin-top: 500px;
}

.content {
  border-top: 5px solid white;
  position: relative;
  z-index: 1;
  background: white;
  min-height: 2800px;
  background-image: url(https://i.imgur.com/DCXgzWc.png);
  background-position-y: top;
  background-repeat: no-repeat;
  background-size: 300%;
  background-position-x: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<div class="wrapper-parallax">
  <header class="site-header">
    <img src="img/ja.svg" width="250px" alt="Anna and James" class="logo">
  </header>

  <div class="content">
    <h1>Content</h1>
  </div>
</div>

Is this what you wanted?

Upvotes: 2

Related Questions