我正在尝试计算一个百分比数(0.0 - 2.0/0% - 200%),以便可以更改 div 进出视图时的不透明度。
- 当窗口高于可视区域时,百分比等于或小于 0
- 当窗口位于可视区域的正中心时,百分比为 1.0
- 当窗口低于可视区域时,百分比为 2.0 及以上
在滚动进出视图时,它将是其中的一部分。
不知何故,我需要将窗口的垂直中心与区域的垂直中心进行比较,但我很难正确计算。
到目前为止我有
var p = {
scrollTop: $(window).scrollTop(),
documentHeight: $(document).height(),
windowHeight: $(window).height(),
contentTop: $('.content').position().top,
contentHeight: $('.content').height()
};
if (p.windowHeight / 2 + p.scrollTop < p.contentHeight / 2 + p.contentTop) {
p.percent = (p.windowHeight / 2 + p.scrollTop) / (p.contentHeight / 2 + p.contentTop);
}
else if (p.windowHeight / 2 + p.scrollTop > p.contentHeight / 2 + p.contentTop) {
p.percent = (p.windowHeight / 2 + p.scrollTop) / (p.contentHeight / 2 + p.documentHeight - p.contentHeight - p.contentTop);
}
else p.percent = 1;
$('.content').animate({
opacity: 1 - Math.abs(p.percent - 1)
}, 1);
但我没有考虑文档高度,所以我知道我遗漏了一些东西。我也觉得这可以在一个等式中完成,没有 if/else
这是我正在研究的一个不起作用的小提琴:http: //jsfiddle.net/nxdTn/
为了更好地演示,请参见下面的示例。
黄色是文档,透明灰色是窗口,蓝色是可视区域。
蓝色的不透明度为 0:
在 100% 不透明度下:
回到0: