在附加 class 之后让 header 淡出然后出现
Have header fade out then in after appending class
我有一个小脚本,允许我的 header 在滚动页面时添加和删除子class。
但是,过渡很困难,我希望 header 变体从一个变体淡入另一个变体。
我不知道如何让它褪色。它要么闪烁,要么闪烁然后消失。我想知道是否有人可以帮助我。
我的 jquery 代码如下(处于损坏状态)
function init() {
window.addEventListener('scroll', function(e){
var distanceY = window.pageYOffset || document.documentElement.scrollTop,
shrinkOn = 100,
header = document.querySelector("#header");
if (distanceY > shrinkOn) {
$("header").addClass("smaller").fadeIn(400);
} else {
if ($("header").hasClass("smaller")) {
$("header").fadeOut(400).removeClass("smaller").fadeIn(400);
}
}
});
}
window.onload = init();
我希望 header 淡出,附加 .smaller class,然后淡入。
和vise-versa.
我希望我的问题有道理。
如果您在淡入淡出功能完成时添加或删除,那么:
$("header").addClass("smaller").fadeIn(400);
变成:
$("header").fadeIn(400, function(){
$(this).addClass("smaller");
});
或者,您可以在 css 中为附加的 类
使用动画变换
我能够弄清楚,但这产生了一个新问题,稍后将发布。以下是我的解决方案:
$(document).ready(function() {
/*
navOffset - The distance in which to trigger the events
scrollPos - The position Y that the page has been scrolled
*/
var navOffset = 5 /*$("header").offset().top;*/
$(window).scroll(function(){
var scrollPos = $(window).scrollTop();
$("header").stop(true);
if (!$("header").hasClass("smaller") || scrollPos < navOffset) {
if (scrollPos > navOffset) {
$("header").fadeTo(400, 0, function() {
$("header").addClass("smaller");
});
$("header").fadeTo(400, 1);
} else {
$("header").fadeTo(400, 0, function (){
$("header").removeClass("smaller");
});
$("header").fadeTo(400, 1);
}
}
});
});
我有一个小脚本,允许我的 header 在滚动页面时添加和删除子class。
但是,过渡很困难,我希望 header 变体从一个变体淡入另一个变体。
我不知道如何让它褪色。它要么闪烁,要么闪烁然后消失。我想知道是否有人可以帮助我。
我的 jquery 代码如下(处于损坏状态)
function init() {
window.addEventListener('scroll', function(e){
var distanceY = window.pageYOffset || document.documentElement.scrollTop,
shrinkOn = 100,
header = document.querySelector("#header");
if (distanceY > shrinkOn) {
$("header").addClass("smaller").fadeIn(400);
} else {
if ($("header").hasClass("smaller")) {
$("header").fadeOut(400).removeClass("smaller").fadeIn(400);
}
}
});
}
window.onload = init();
我希望 header 淡出,附加 .smaller class,然后淡入。
和vise-versa.
我希望我的问题有道理。
如果您在淡入淡出功能完成时添加或删除,那么:
$("header").addClass("smaller").fadeIn(400);
变成:
$("header").fadeIn(400, function(){
$(this).addClass("smaller");
});
或者,您可以在 css 中为附加的 类
使用动画变换我能够弄清楚,但这产生了一个新问题,稍后将发布。以下是我的解决方案:
$(document).ready(function() {
/*
navOffset - The distance in which to trigger the events
scrollPos - The position Y that the page has been scrolled
*/
var navOffset = 5 /*$("header").offset().top;*/
$(window).scroll(function(){
var scrollPos = $(window).scrollTop();
$("header").stop(true);
if (!$("header").hasClass("smaller") || scrollPos < navOffset) {
if (scrollPos > navOffset) {
$("header").fadeTo(400, 0, function() {
$("header").addClass("smaller");
});
$("header").fadeTo(400, 1);
} else {
$("header").fadeTo(400, 0, function (){
$("header").removeClass("smaller");
});
$("header").fadeTo(400, 1);
}
}
});
});