1

我有一个函数可以计算页面的访问量,并计算达到某个目标的剩余访问量。就像倒计时一样。有一个“隐藏”的图片,每次有新的访问,都会显示部分图片。

我有简单的 JavaScript 代码来计算访问次数,一些 CSS 根据百分比“揭示”图片。

但现在我需要让这个“揭幕”放慢速度,这意味着随着访问量越来越接近目标,剩余图片的百分比应该会减少。

现在这就是我能从我的大脑中得到的所有信息:

remaining_percentage_to_goal = (current_visits*100)/goal

div_height = (remaining_percentage_to_goal*image_height)/100

我可以尝试类似:

slow_down_rate = 0.25 
div_height = div_height-(remaining_percentage_to_goal*slow_down_rate)

当然,这永远不会达到图像高度的 100%,所以我想到我可以使用 IF 语句或在达到一定百分比时删除 slow_down_rate 的东西来做一个硬编码的固定变量,但这似乎并不完全我们正在寻找的效果。所以我想知道是否有更好或更优雅的方法。

谢谢

4

1 回答 1

3

听起来你想要一种对数方法。为了这个答案,我们假设您的目标是 1500 次访问(当然,这可以是任意数字)。您知道,对于零访问,您希望显示百分比为零,对于 1500 次访问,您希望显示 100%,因此您知道图表上的两个点:(0,0) 和 (1500,1)。为了使自然对数适合这些参数,您必须对其进行平移和缩放,因此您有:

f(x) = alpha*ln(x+beta)

我们知道 ln(1)=0,所以 beta=1 很容易。通过插入我们的第二点,我们也可以很容易地找到 alpha:

1500 = alpha*ln(1500+1)

alpha = 1500 / ln(1500+1)

现在,如果我们绘制它,我们得到:

在此处输入图像描述

这看起来像我们想要的功能......它在接近目标时自然会变慢,但它仍然达到目标。

将其翻译成 Javascript,您将拥有:

var goal = 1500;
var alpha = goal / Math.log(goal+1);
var percentVisible = alpha * Math.log(visits+1);

我希望这有帮助!

于 2012-06-29T20:30:45.897 回答