実現したいこと
boxを右斜め下へ、(x、y)=(500px、300px)へ2秒かけて移動するスライドアニメーションを作成したい
前提
ここに質問の内容を詳しく書いてください。
画像にあるboxをクリックすると右斜め下へ移動し、リセットボタンを押すと戻るというのを記述したのですが、
現時点では右斜め下へ500px動いております。
これを右500px、下300pxという、バラバラの数値で実行したいのですが、うまく行きません。
このコードの流れとしては、
1、slideaAnimation()にて(element,direction,distance,duration)を記述。position変数を設定し0を格納
2、slide()にて、ボタンをクリック後にpositionに1ずつ加算していく
3、もしposition < distanceなら、directionに記述した内容が一致すればtranslate(${position}px,${position}pxまで動く
4、position > directionになったら、clearnIntervalでslide()を止める
5、slideAnimation()にそれぞれ記述し、動く。
ですが、どうやっても右と下で別々の距離が設定できません。
行った対処としては、distanceとpositionをそれぞれ2つに分け、それを置き換えて記述もしたのですが、斜めには動いても片方の数値でしか実行されませんでした。
これはどうしたら右斜め下、500px、300pxと動かすことができるのでしょうか?
お詳しい方がいましたら教えていただけないでしょうか?
よろしくお願いいたします
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
<body> <div class="place"> <button onclick="styleReset()">リセット</button> <div id="box" onclick="boxslideAimation()"> <p>box</p> </div> </div> <script> var sw = 0; console.log(sw)Javascript
1ソースコード
</script> </body> const boxAnimation = document.getElementById("box"); function boxslideAimation(){ if(sw == 0) { const element = document.getElementById("box"); function slideAnimation(element, direction, distance, duration) { let position = 0; function slide() { position += 1; // if (position < distance) { if (direction === "rightdown") { element.style.transform = `translate(${position}px,${position}px)`; sw = 1; } }else { clearInterval(slide); } } setInterval(slide, duration); } slideAnimation(element, "rightdown", (500,300), 2); }else if(sw > 1) { } } function styleReset(){ const boxreset = document.getElementById("box") boxreset.style.transform = `translate(0px,0px)`; sw = 0; }
回答2件
あなたの回答
tips
プレビュー