指定した範囲内の数値をsetTimeoutを使って往復させてみます。
サンプルコード
HTML
<div id="sample"></div>
CSS
#sample {
position: absolute;
top: 100px;
left: 100px;
width: 200px;
height: 200px;
background: #999;
}
JavaScript
var target = document.getElementById('sample'); // 対象の要素
var max = 200; // 最大値
var min = 0; // 最小値
var count = 100; // カウンター
var direction = 'right'; // 進行方向
var time = 30; // アニメーションの速さ
function animation() {
// 進行方向が右で、カウンターが最大値を超えている場合
if(direction == 'right' && count > max) {
direction = 'left'; // 進行方向の変更
// 進行方向が左で、カウンターが最小値より小さい場合
} else if(direction == 'left' && count < min) {
direction = 'right'; // 進行方向の変更
}
// 進行方向が右のとき
if(direction == 'right') {
count++; // カウンターに1プラスする
// 進行方向が左のとき
} else if(direction == 'left') {
count--; // カウンターに1マイナスする
}
target.style.left = count + 'px'; // 対象要素のポジション変更
setTimeout(animation, time); // animationの再実行
}
animation();
指定した範囲内の数値を往復するデモページ
進行方向に応じてcountの数値を変更して、対象のポジションを変更してアニメーションにしています。
進行方向が右の場合は最大値を超えたら、左の場合は最小値より小さい場合に進行方向を変更してループになるようにしています。
コメントが承認されるまで時間がかかります。