2016-07-12 4 views
1

私は日の出と日の入りの間に明るい青色と濃紺の紫色の間で背景色がゆっくりと移行する気象アプリに機能を組み込もうとしています。jQuery/jQueryUiを使用して日の出から日没までの時間に基づいて背景色を変更するには?

var sun = "http://api.sunrise-sunset.org/json?lat=" + lat + "&lng=" + lon + "&date=today"; 
    $.getJSON(sun, function(sunData){ 
    var sunUp = sunData.results.sunrise; 
    var sunDown = sunData.results.sunset; 
    var sunStatus = sunData.status; 
    var nowEpoch = (Date.now())(1000) 

     $("body").animate({'background-color':'#56c1ff'},nowEpoch - ((sunDown)*(1000)), 'linear');` 
+1

そして、あなたの質問ですか...? – j08691

+0

どのライブラリを使用できますか?どのような方法ですか?正しい軌道にいるのですか? – DeltaFlyer

+1

コードが多かれ少なかれ動作するようです。いくつかの機会といくつかの未定義の変数がありますが、概念的にはうまくいくようです。あなたがおそらく変える必要があることの1つは、理論上のそれが夕暮れから夕暮れまで混ざり合っているので、「日焼けから日没まで」からのブレンドです。おそらく、あなたは真夜中の色を定義し、それを組み込むべきです。 – JonSG

答えて

1

http://codepen.io/stephepush/pen/pbWwogは概念的に、これはあなたのコードです:関連するコードは以下です私のコードの一部は、あなたはここでプロジェクト全体をチェックアウトすることができます。午前の色(#fff)から始まり、夕方の色(#000)に混じります。

でも、

まず、あなたのコードでは、現在は日没から減算しています。あなたはそれを逆にしたいと思っています。

次に、1つの夜間(朝)から2番目の夜間(夜)にブレンドしています。これはおそらく非常に微妙です。あなたは真ん中で1日中にブレンドする必要があります。または、あなたの背景は一日中夕暮れのように見えます。

var now = (new Date()).getTime(); 
 
var fakeMidnight = now + (30 * 1000); 
 
var untilMidnight = (fakeMidnight - now); 
 

 
console.log("it will become night over the next : " + (untilMidnight/ 1000) + " seconds.") 
 
$("body").animate({'background-color':'#000'}, (fakeMidnight - now), 'linear')
body { background-color:#fff; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

+0

変数untilMidnightを最初に宣言してから偽の深夜に使うべきではありませんか?私はUnix Epochを使用していますので、varに現在のエポック・タリーを使用し、真夜中のエポックである真夜中* 1000を追加すると、92年後の秒数を1000に加算しませんか? midNight(またはfakeMidnight)から減算して、真夜中まで方程式を逆にしてから、今度はその数値を加算し、その数値を変更の時間間隔として使用しますか? – DeltaFlyer

+1

** fakeMidnight **は、来るべき真夜中を表す変数です。概念的に**((new Date())。setHours(24,0,0,0))**しかし、それは非常に活発なデモを作成しませんでした。将来30秒に設定してください。あなたの例では、これは最終的な目標時間として使用しているように、実際には「日没」のようになります。 ** untilMidnight **は、**今**から** fakeMidnight **の間のmsの数です。これはあなたのアニメーションにブレンドする時間を知らせます。それを得るには、** fakeMidnight ** – JonSG

+0

から**今**を差し引いてください。とった。どうもありがとう。 – DeltaFlyer

関連する問題