这个问题让我发疯了,我正在寻找解决这个问题的最佳方法。
我有一个 div $(".sun") 我想沿着椭圆的圆周移动,这是我用 Raphael.js 生成的,所以椭圆与屏幕一样宽,水平居中,和一样高作为宽度的一半,并且绝对定位在 0,0(左上角):
//draw ellipse that is as wide as the window and half as tall as the width
var paper = Raphael(document.getElementById("ellipse"), Wwidth, halfIt);
var c = paper.ellipse(Wwidth/2, halfIt/2, Wwidth/2, halfIt/2);
c.attr({'fill': 'transparent', 'stroke': 'red'});
jsfiddle here(在 jsfiddle 中更改了用于演示的值)
椭圆是天体在天空中行进路径的程式化表示。这意味着在早上 6 点,太阳位于屏幕最左侧的椭圆长轴上。中午 12 点,太阳将位于屏幕的顶部中心,下午 6 点,太阳位于椭圆长轴的最右侧。
以度数表示,早上 6 点 = 180 度,中午 12 点 = 90 度,下午 3 点 = 45 度,以此类推。从本质上讲,早上 6 点到下午 6 点之间的每个小时相隔 15 度。添加分钟计算:
var hours = new Date().getHours();
(removed code that converts the numerical hour to my stylized degrees for brevity)
var mins = new Date().getMinutes();
var minsdegree = mins * .25;
var skyangle = hourdegree + minsdegree;
例如,如果是上午 11:39,skyangle 将等于 114.75 度。
挑战: 如何沿椭圆路径为太阳设置动画,使其根据时间与我的自定义角度相对应。从技术上讲,我不需要它来“动画”,只要在页面加载时对应正确的角度即可。但是,如果您保持页面打开足够长的时间,让它沿着路径动画会很整洁。