CSS3のアニメーションをjQueryを使って任意のタイミングで行わせてみます。
サンプルコード1
あらかじめアニメーション用のclassを用意して、JavaScriptでclassを追加してアニメーションしてみます。
HTML
<div class="sample"></div> <button id="btn">アニメーション実行</button>
CSS
.sample {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
.animation {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
transition: 1s linear;
}
JavaScript
$(function() {
$('#btn').on('click', function() {
$('.sample').addClass('animation');
});
});
サンプルコード2
あらかじめアニメーションの値を決めるのではなく、JavaScriptで値を決めてアニメーションさせてみます。
HTMLは先ほどと同じです。
JavaScript
$(function() {
// 初期位置の設定
$('.sample').css({
'-webkit-transform': 'translate(0px, 0px)',
transform: 'translate(0px, 0px)'
});
$('#btn').on('click', function() {
moving('.sample');
});
});
// 移動処理
function moving(target) {
// 移動範囲
var range = movingRange(target);
// 移動座標の取得
var x = getRandomArbitary(0, range[0]);
var y = getRandomArbitary(0, range[1]);
// アニメーション実行
$(target).css({
transition: '1s linear',
'-webkit-transform': 'translate(' + x + 'px, ' + y + 'px)',
transform: 'translate(' + x + 'px, ' + y + 'px)'
});
}
// 移動可能な範囲を返す
function movingRange(target) {
var winw = $(window).width();
var winh = $(window).height();
var elew = $(target).width();
var eleh = $(target).height();
return [(winw - elew), (winh - eleh)];
}
// 指定範囲内の乱数を返す
function getRandomArbitary(min, max) {
return Math.random() * (max - min) + min;
}
画面内のランダムの座標にアニメーションで移動するようにしてみました。
JavaScriptでアニメーション内容を設定するデモページ
コメントが承認されるまで時間がかかります。