我已經在javacript中使用svg創建了「iphone style」切換按鈕。代碼如下:從使用Javascript創建的svg中刪除單個對象
var btnsvg;
var aCircle;
var aTextOn;
var aTextOff;
function circle_click(evt) {
var circle = evt.target;
if ($(circle).position({ svgCx: 20 })) {
$(circle).animate({ svgCx: 50 }, 400);
$(aTextOn).animate({ svgFillOpacity: 1.0 }, 400);
$(aTextOff).animate({ svgFillOpacity: 0.0 }, 400);
}
else {
$(circle).animate({ svgCx: 20 }, 400);
$(aTextOn).animate({ svgFillOpacity: 0.0 }, 400);
$(aTextOff).animate({ svgFillOpacity: 1.0 }, 400);
}
}
function drawToggleButton() {
$('.toggleButton').each(function() {
btnsvg = $(this).svg().svg('get');
btnsvg.linearGradient('btnGrad',
[[0, '#000000'], [1, '#000000', 0.32]], 50.168, 28, 50.168, 3,
{ gradientUnits: 'userSpaceOnUse'
});
btnsvg.linearGradient('offGrad',
[[0, '#1F1F1F'], [1, '#A2A1A1']], 32.6685, 28, 32.6685, 3,
{ gradientUnits: 'userSpaceOnUse'
});
btnsvg.linearGradient('onGrad',
[[0, '#1A2D49'], [1, '#304866']], 32.6685, 28, 32.6685, 3,
{ gradientUnits: 'userSpaceOnUse'
});
btnsvg.rect(10, 10, 50, 20, 10, 10,
{ fill: 'url(#offGrad)', stroke: 'black', strokeWidth: 1
});
aCircle = btnsvg.circle(20, 20, 10, { onclick: 'circle_click(evt)', fill: 'url(#btnGrad)' });
});
}
它那種作品......
問題1個 這兩個詞都顯示在第一,不透明度可以讓我改變對動畫,但不允許我設置爲INTIAL屬性。我真的很想一起刪除文本(aTextOn =可見,aTextOff = notVisible)但我現在會爲不透明度做出決定。我也試過
$(aTextOff).text({fill: 'rgb(0,0,0,0.0)'});
沒有工作或者
問題2 只適用於第一次點擊...不知道爲什麼會這樣!
任何幫助將超級讚賞!謝謝
ps。如果你有關於平滑過渡漸變的提示,那也會很酷。
我不知道,如果你想要一個'普通'的JS解決方案,但如果庫是一個選項,我強烈建議D3.js。有關不透明度轉換的示例,請參閱http://blog.visual.ly/creating-animations-and-transitions-with-d3-js/。 – cmonkey 2013-03-21 17:08:24
有點想用插件來做...看到下面的解決方案:) – bluebela84 2013-03-21 19:48:03