利用 setInterval 定時器,交替執行向上、向下的 animate(),形成晃動視覺效果。
function shakeVertical($el, distance, interval) {
var up = true;
setInterval(function() {
$el.animate({ top: up ? '-=' + distance : '+=' + distance }, 200);
up = !up;
}, interval);
}
// 使用
shakeVertical($("#myImage"), 10, 1000); // 每秒上下移動 10px
@keyframes shakeVertical {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
.shake { animation: shakeVertical 1s infinite ease-in-out; }
JS 僅需 $el.addClass('shake'),GPU 加速、不阻塞主執行緒。
animate 操作 top 需元素 position: relative/absolute/fixed。animate 可能導致佇列堆積,建議 .stop(true, true) 清佇列或用 CSS 動畫。