使用CSS和Jquery平稳过渡

时间:2018-10-22 16:13:00

标签: jquery css transition

我正在使用jQuery根据滚动位置更改固定标头上header元素的大小。我已经获得了可以根据需要进行更改的代码,但是更改是突然的而不是平稳的。我意识到我需要在CSS中使用transition属性,但是无法弄清楚在哪里或如何做。会有所帮助。

$(window).scroll(function() {
  if ($(window).scrollTop() > 200) {
    $('.bg').addClass('show')
    $('#headerTitle').css("font-size", "1.5em");
  } else {
    $('.bg').removeClass('show')
    $('#headerTitle').css('font-size', "2em")
  };
});

$('.scroll').on('click', function(e) {
  e.preventDefault()

  $('html, body').animate({
    scrollTop: $(this.hash).offset().top
  }, 1000);
});
.transition {
  -webkit-transition: all 1s ease-in-out;
  -moz-transition: all 1s ease-in-out;
  -o-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;
}

.show {
  background-color: #000;
  width: 100%;
  height: 8.5em;
  opacity: 0.8;
}

#headerTitle {
  font-size: 2em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header class="bg transition">
  <p style="width: 60%; margin-left: 20%; border-bottom: 1px solid #FFF; padding-bottom: 1em;">
    <span id="headerTitle">Joe Blow</span>
  </p>
</header>

1 个答案:

答案 0 :(得分:0)

您需要在标题样式中包含transition个属性:

#headerTitle {
font-size: 2em;
  -webkit-transition: all 1s ease-in-out;
  -moz-transition: all 1s ease-in-out;
  -o-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;
}