下記でどうでしょうか。
css
1.box1{
2 transform: translateX(0%);
3 transition: 0s;
4}
5.box1.x1{
6 transform: translateX(-200%);
7 transition: 1s;
8}
js
1function move(){
2obj.classList.add("x1");
3setTimeout('obj.classList.remove("x1");obj.style.transform="translateX(200%)"',1000);
4}
別案
CSS animation を使ってみました。
CSS
1.box1{
2 transform: translateX(0%);
3}
4.box1.x1{
5 transform: translateX(200%);
6 animation: move 1s;
7}
8@keyframes move {
9 0% {
10 transform: translateX(0%);
11 }
12 100% {
13 transform: translateX(-200%);
14 }
15}
js
1function move(){
2obj.classList.add("x1");
3}
追記
最終的に元に位置に戻る。
ボタンをクリックするたびに繰り返す。
setTimeout は使わない。→animationend イベントを使う。
HTMLElement: animationend イベント - Web API | MDN
html
1<img id="obj" src="https://www.packaging.com/wp-content/uploads/product-samples.jpg" class="box1">
2<input type="button" value="動かす" id="startbtn">
css
1.box1.x1{
2 animation: move 2s;
3}
4
5@keyframes move {
6 0% {
7 transform: translateX(0%);
8 }
9 50% {
10 transform: translateX(-200%);
11 }
12 50.01% {
13 transform: translateX(200%);
14 }
15 100% {
16 transform: translateX(0%);
17 }
18}
js
1let target = document.querySelector('.box1');
2document.querySelector('#startbtn').addEventListener('click', () => {
3 target.classList.add('x1');
4});
5target.addEventListener('animationend', () => {
6 target.classList.remove('x1');
7});