回答編集履歴

3

参考リンク追加

2021/01/07 02:18

投稿

hatena19
hatena19

スコア33790

test CHANGED
@@ -100,7 +100,11 @@
100
100
 
101
101
  ボタンをクリックするたびに繰り返す。
102
102
 
103
- setTimeout は使わない。
103
+ setTimeout は使わない。→animationend イベントを使う。
104
+
105
+
106
+
107
+ [HTMLElement: animationend イベント - Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/animationend_event)
104
108
 
105
109
 
106
110
 

2

コード追記

2021/01/07 02:18

投稿

hatena19
hatena19

スコア33790

test CHANGED
@@ -87,3 +87,85 @@
87
87
  }
88
88
 
89
89
  ```
90
+
91
+
92
+
93
+ 追記
94
+
95
+ ---
96
+
97
+
98
+
99
+ 最終的に元に位置に戻る。
100
+
101
+ ボタンをクリックするたびに繰り返す。
102
+
103
+ setTimeout は使わない。
104
+
105
+
106
+
107
+ ```html
108
+
109
+ <img id="obj" src="https://www.packaging.com/wp-content/uploads/product-samples.jpg" class="box1">
110
+
111
+ <input type="button" value="動かす" id="startbtn">
112
+
113
+ ```
114
+
115
+ ```css
116
+
117
+ .box1.x1{
118
+
119
+ animation: move 2s;
120
+
121
+ }
122
+
123
+
124
+
125
+ @keyframes move {
126
+
127
+ 0% {
128
+
129
+ transform: translateX(0%);
130
+
131
+ }
132
+
133
+ 50% {
134
+
135
+ transform: translateX(-200%);
136
+
137
+ }
138
+
139
+ 50.01% {
140
+
141
+ transform: translateX(200%);
142
+
143
+ }
144
+
145
+ 100% {
146
+
147
+ transform: translateX(0%);
148
+
149
+ }
150
+
151
+ }
152
+
153
+ ```
154
+
155
+ ```js
156
+
157
+ let target = document.querySelector('.box1');
158
+
159
+ document.querySelector('#startbtn').addEventListener('click', () => {
160
+
161
+ target.classList.add('x1');
162
+
163
+ });
164
+
165
+ target.addEventListener('animationend', () => {
166
+
167
+ target.classList.remove('x1');
168
+
169
+ });
170
+
171
+ ```

1

コード追記

2021/01/07 00:48

投稿

hatena19
hatena19

スコア33790

test CHANGED
@@ -35,3 +35,55 @@
35
35
  }
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+ 別案
42
+
43
+ ---
44
+
45
+ CSS animation を使ってみました。
46
+
47
+ ```CSS
48
+
49
+ .box1{
50
+
51
+ transform: translateX(0%);
52
+
53
+ }
54
+
55
+ .box1.x1{
56
+
57
+ transform: translateX(200%);
58
+
59
+ animation: move 1s;
60
+
61
+ }
62
+
63
+ @keyframes move {
64
+
65
+ 0% {
66
+
67
+ transform: translateX(0%);
68
+
69
+ }
70
+
71
+ 100% {
72
+
73
+ transform: translateX(-200%);
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+ ```js
82
+
83
+ function move(){
84
+
85
+ obj.classList.add("x1");
86
+
87
+ }
88
+
89
+ ```