teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

参考リンク追加

2021/01/07 02:18

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -49,8 +49,10 @@
49
49
 
50
50
  最終的に元に位置に戻る。
51
51
  ボタンをクリックするたびに繰り返す。
52
- setTimeout は使わない。
52
+ setTimeout は使わない。→animationend イベントを使う。
53
53
 
54
+ [HTMLElement: animationend イベント - Web API | MDN](https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/animationend_event)
55
+
54
56
  ```html
55
57
  <img id="obj" src="https://www.packaging.com/wp-content/uploads/product-samples.jpg" class="box1">
56
58
  <input type="button" value="動かす" id="startbtn">

2

コード追記

2021/01/07 02:18

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -42,4 +42,45 @@
42
42
  function move(){
43
43
  obj.classList.add("x1");
44
44
  }
45
+ ```
46
+
47
+ 追記
48
+ ---
49
+
50
+ 最終的に元に位置に戻る。
51
+ ボタンをクリックするたびに繰り返す。
52
+ setTimeout は使わない。
53
+
54
+ ```html
55
+ <img id="obj" src="https://www.packaging.com/wp-content/uploads/product-samples.jpg" class="box1">
56
+ <input type="button" value="動かす" id="startbtn">
57
+ ```
58
+ ```css
59
+ .box1.x1{
60
+ animation: move 2s;
61
+ }
62
+
63
+ @keyframes move {
64
+ 0% {
65
+ transform: translateX(0%);
66
+ }
67
+ 50% {
68
+ transform: translateX(-200%);
69
+ }
70
+ 50.01% {
71
+ transform: translateX(200%);
72
+ }
73
+ 100% {
74
+ transform: translateX(0%);
75
+ }
76
+ }
77
+ ```
78
+ ```js
79
+ let target = document.querySelector('.box1');
80
+ document.querySelector('#startbtn').addEventListener('click', () => {
81
+ target.classList.add('x1');
82
+ });
83
+ target.addEventListener('animationend', () => {
84
+ target.classList.remove('x1');
85
+ });
45
86
  ```

1

コード追記

2021/01/07 00:48

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -16,4 +16,30 @@
16
16
  obj.classList.add("x1");
17
17
  setTimeout('obj.classList.remove("x1");obj.style.transform="translateX(200%)"',1000);
18
18
  }
19
+ ```
20
+
21
+ 別案
22
+ ---
23
+ CSS animation を使ってみました。
24
+ ```CSS
25
+ .box1{
26
+ transform: translateX(0%);
27
+ }
28
+ .box1.x1{
29
+ transform: translateX(200%);
30
+ animation: move 1s;
31
+ }
32
+ @keyframes move {
33
+ 0% {
34
+ transform: translateX(0%);
35
+ }
36
+ 100% {
37
+ transform: translateX(-200%);
38
+ }
39
+ }
40
+ ```
41
+ ```js
42
+ function move(){
43
+ obj.classList.add("x1");
44
+ }
19
45
  ```