因爲我的上一個問題,位於here,目前在技術上是不可行的(html2canvas不能正確渲染我的元素,因爲它只需要'快照'),我採取了不同的方法。在隨機位置創建重複元素
本質上,當一個對象被點擊時,我希望它消失,然後它的多個較小版本隨機分散在屏幕上。所以,爲了簡單起見,請拍下一隻貓的圖像(cat.jpg):點擊時,它應該看起來像是爆炸成三個較小的cat.jpg圖像,這些圖像被扔在屏幕上。同時,原始的cat.jpg被隱藏起來。
我(現在的全功能)代碼:
$('#cat').click(function() {
$(this).hide();
for (var j = 1; j <= 3; j++) {
$('#content').append('<span><img class="cat" src="cat.jpg" /></span>');
}
$('#cat').css("position", "relative");
$('img.cat').each(function(i) {
var newTop = Math.floor(Math.random()*500)*((i%2)?1:-1);
var newLeft = Math.floor(Math.random()*500)*((i%2)?1:-1);
$(this).css({position: "relative",
top: 0,
left: 0
}).animate({
top: newTop,
left:newLeft
}, 1000);
});
});
我知道,目前不使他們更小,但如果我複製+隨機定位正確,我可以讓自己大小的因素之一的當前循環。無論如何,它是半工作的,但有沒有更好或更優雅的解決方案呢?
編輯:我更新了我的代碼,其版本實際上幾乎完全符合我的喜好,但我仍在尋求任何形式的建議和改進。我會將答案授予給我一個更好的方法的人。
我去睡覺,但它似乎是一個封閉的問題。我知道這並不能幫助你,但它可以幫助未來的讀者回答你的問題。 – farvilain
你說得對,代碼很混亂,但我解決了關閉問題。現在的問題是.each循環不會異步執行,而是將最後的cat.jpg移動三次而不是一次。儘管謝謝你的幫助! – daveycroqet