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%表示が必要であるため、グラフ上の2つのポイント((0,0)と(1500,1))がわかります。自然対数をこれらのパラメーターに適合させるには、それを変換してスケーリングする必要があるため、次のようになります。

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

ln(1)= 0であることがわかっているので、beta=1は簡単です。2番目のポイントを接続することで、アルファを非常に簡単に見つけることもできます。

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 に答える