使用 CSS 和 Jquery 平滑过渡



我正在使用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>

您需要在标题样式中包含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;
}

最新更新