2
我已经设置了一个jQuery函数,可以在某个div进入视图时更改主体背景颜色,例如,身体背景颜色为黑色,当#block-three
(包含黑色文本)时,身体背景颜色会变为白色,并在视线不正常时变回。这工作正常,但它只是非常突然,我正在寻找背景颜色之间更平滑的过渡,在滚动时颜色之间淡化(如果可能)。
的jsfiddle演示:http://jsfiddle.net/neal_fletcher/TB53d/
HTML:平滑的CSS更改转换
<div id="block-one" class="block">
<div class="inner-block">Test</div>
<div class="inner-block"></div>
<div class="inner-block"></div>
</div>
<div id="block-two" class="block">
<div class="inner-block">Test</div>
</div>
<div id="block-three" class="block">
<div class="inner-block">Test</div>
<div class="inner-block"></div>
</div>
<div id="block-four" class="block">
<div class="inner-block">Test</div>
<div class="inner-block"></div>
<div class="inner-block"></div>
</div>
<div id="block-five" class="block">
<div class="inner-block">Test</div>
<div class="inner-block"></div>
<div class="inner-block"></div>
</div>
的jQuery:
var blockHeight = [];
$(".block").each(function() {
blockHeight.push($(this).height());
});
function hoverCurrentItem() {
var sIndex = 0;
var totalHeight = 0;
var scrolled = $(window).scrollTop();
for (var i in blockHeight) {
totalHeight += blockHeight[i];
if (totalHeight > scrolled) {
break;
} else {
sIndex++;
}
}
var $sItem = $(".block").eq(sIndex);
if (!$sItem.hasClass("selected")) {
$(".selected").removeClass("selected");
$sItem.addClass("selected");
}
if ($("#block-three").hasClass("selected")) {
$("body").css("background-color", "white");
} else {
$("body").css("background-color", "black");
}
}
hoverCurrentItem();
$(window).scroll(function (e) {
hoverCurrentItem()
});
任何建议,将不胜感激!
身高CSS'transition',因为它是非常更有效率和CPU友好。 CSS'transition'和jQuery' animate()'之间的区别就像“你会不会顺利地改变它”和“GRAGH YOU ---- ING MORON改变颜色 - 现在就是!”之间的区别。 ..如果你赶上我的漂移。也就是说,更喜欢'transition:background-color 1s';如果你知道你想要动画的属性。 –
这非常好知道,谢谢! – elefun