0
雪鳥(http://www.snowbird.com/)在他們的網站上做了一些非常酷的東西。我喜歡的一件事是,當你將鼠標懸停在右側的黑色面板上時,另一個面板會翻轉,然後統計圖表和橙色圖形「旋轉」到最終位置。我想用CSS3或JS複製圖形中旋轉的橙色條。看起來他們可能會使用我以前從未使用過的canvas
元素,但會對它開放。任何想法處理這個最好的方法?複製雪鳥的動畫效果
謝謝!
雪鳥(http://www.snowbird.com/)在他們的網站上做了一些非常酷的東西。我喜歡的一件事是,當你將鼠標懸停在右側的黑色面板上時,另一個面板會翻轉,然後統計圖表和橙色圖形「旋轉」到最終位置。我想用CSS3或JS複製圖形中旋轉的橙色條。看起來他們可能會使用我以前從未使用過的canvas
元素,但會對它開放。任何想法處理這個最好的方法?複製雪鳥的動畫效果
謝謝!
是的,他們正在使用一個畫布。 這裏有一個出發點:
var c = document.getElementById('c').getContext('2d');
var duration = 700; // duration of animation
var delay = 10; // interval
var stepT = duration/delay; // steps needed
var cT = 0; // step counter
c.fillStyle = 'white'
var end = 58; // endpoint in percent
var int = setInterval(function(){
c.fillRect(0,0,100,100);
c.strokeStyle = 'orange';
c.beginPath();
c.arc(50, 50, 40, -.5*Math.PI, (-.5*Math.PI + 2*Math.PI/100 * end * cT/stepT));
c.lineWidth = 10;
c.stroke();
if(++cT>stepT){
clearInterval(int);
}
},delay);
2版多圈:
<canvas class="circle" data-duration="700" data-end="75" width="100" height="100"></canvas>
<canvas class="circle" data-duration="200" data-end="50" width="100" height="100"></canvas>
<canvas class="circle" data-duration="500" data-end="20" width="100" height="100"></canvas>
$('.circle').each(function(){
var duration = $(this).data('duration') || 700; // duration of animation
var delay = 10; // interval
var stepT = duration/delay; // steps needed
var cT = 0; // step countervar
var end = $(this).data('end') || 58; // endpoint in percent
var int = null;
var c = this.getContext('2d');
c.fillStyle = 'white';
c.lineWidth = 10;
c.strokeStyle = 'orange';
$(this).bind('mouseenter',function(){
int = setInterval(function(){
c.fillRect(0,0,100,100);
c.beginPath();
c.arc(50, 50, 40, -.5*Math.PI, (-.5*Math.PI + 2*Math.PI/100 * end * cT/stepT));
c.stroke();
if(++cT>stepT){
clearInterval(int);
}
},delay);
}).bind('mouseleave',function(){
clearInterval(int);
c.fillRect(0,0,100,100);
cT=0;
});
});
這是完美的。謝謝@安迪!你有很好的資源來了解更多關於畫布的知識嗎? – Andrew 2013-04-28 14:04:50
@Andrew對不起,我沒有一個單一的畫布頁面,但谷歌搜索會帶來很多資源和教程頁面。例如https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial – Andy 2013-04-28 14:35:26
好吧。我已經開始挖掘其中的一些,但不知道你是否有其他資源。別擔心。此外,還有兩個後續問題:1)您如何在懸停時進行此項工作,以便動畫在您懸停時重置,並在重新懸停時重新開始動畫?現在我將它放在一個懸停函數中,當它懸停在它上面時它會運行,但是當您懸停並重新開啓時,它不會再運行。 2)你如何使該功能可重複使用?我有6個這些元素我想要動畫,我想重用該功能(同時更改持續時間)。謝謝! – Andrew 2013-04-28 15:15:03