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

回答編集履歴

5

解説図のアップデート

2018/11/24 10:51

投稿

colling
colling

スコア798

answer CHANGED
@@ -65,4 +65,4 @@
65
65
  ---
66
66
  --追記--
67
67
  この絵でわかっていただけると思うのですが、、。
68
- ![絵で解説](676410121cae54d6cccb83c663e5368a.png)
68
+ ![絵で解説](9839f84551c13c83fbaaa86422e12841.png)

4

追記

2018/11/24 10:51

投稿

colling
colling

スコア798

answer CHANGED
@@ -60,4 +60,9 @@
60
60
  <div id="box" style="position:absolute;top:400px;left:200px;width:100px;height:100px;background-color:lightgray;"></div>
61
61
  </body>
62
62
  </html>
63
- ```
63
+ ```
64
+
65
+ ---
66
+ --追記--
67
+ この絵でわかっていただけると思うのですが、、。
68
+ ![絵で解説](676410121cae54d6cccb83c663e5368a.png)

3

修正 ちょい修正

2018/11/24 10:29

投稿

colling
colling

スコア798

answer CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ---
11
11
  --追記--
12
- `creatjs`は触ったことがないので、普通のjavascriptで、例を書きますね。
12
+ `creatjs`は触ったことがないので、普通のjavascriptで、divを図形に見立てて例を書きますね。
13
13
  `creatjs`も中身は`javascript`なので同じ考え方だと思います。
14
14
 
15
15
  コメントにて、基準点が画面中央位置じゃない時を気にされていたので、起点 top:400px; left:200px; にしてあります。

2

追記

2018/11/24 08:45

投稿

colling
colling

スコア798

answer CHANGED
@@ -14,6 +14,7 @@
14
14
 
15
15
  コメントにて、基準点が画面中央位置じゃない時を気にされていたので、起点 top:400px; left:200px; にしてあります。
16
16
 
17
+ わかりやすいように、動作をまとめず一つずつ書いてますので参考にしてください。
17
18
  ```javascript
18
19
  <!DOCTYPE html>
19
20
  <html>

1

追記

2018/11/24 08:44

投稿

colling
colling

スコア798

answer CHANGED
@@ -4,4 +4,59 @@
4
4
  つまり
5
5
  `container.x ="大きさが増えた分の半分減らす"`
6
6
  `container.y ="大きさが増えた分の半分減らす"`
7
- です。
7
+ です。
8
+
9
+
10
+ ---
11
+ --追記--
12
+ `creatjs`は触ったことがないので、普通のjavascriptで、例を書きますね。
13
+ `creatjs`も中身は`javascript`なので同じ考え方だと思います。
14
+
15
+ コメントにて、基準点が画面中央位置じゃない時を気にされていたので、起点 top:400px; left:200px; にしてあります。
16
+
17
+ ```javascript
18
+ <!DOCTYPE html>
19
+ <html>
20
+ <head>
21
+ <meta charset="UTF-8">
22
+ <style>
23
+
24
+ </style>
25
+ <script>
26
+ function kakudai($width){
27
+ var $target = document.getElementById('box');
28
+ var orgWidth = $target.clientWidth;//元の幅
29
+ var orgHeight = $target.clientHeight;//元の高さ
30
+ var rect = $target.getBoundingClientRect();//元の座標取得(左上の角)
31
+ var orgTop = rect.top;//元座標 y
32
+ var orgLeft = rect.left;//元座標 x
33
+
34
+
35
+ var zoom = 1.1;//ボタンを押すたび1.1倍
36
+ var nextWidth = (orgWidth*zoom);//次のサイズは元の幅×zoom
37
+ var nextHeight = (orgHeight*zoom);//次のサイズは元の高さ×zoom
38
+
39
+ var diffWidth = (nextWidth)-orgWidth;//差を求めてdiffWidthに代入
40
+ var diffHeight = (nextHeight)-orgHeight;//差を求めてdiffHeightに代入
41
+
42
+ $target.style.width = nextWidth+'px';//幅を変更
43
+ $target.style.height = nextHeight+'px';//高さを変更
44
+
45
+ var nextTop = (orgTop-(diffWidth/2))+'px';//大きくなった分の半分を引く
46
+ var nextLeft = (orgLeft-(diffHeight/2))+'px';//大きくなった分の半分を引く
47
+ console.log(nextTop);
48
+ console.log(nextLeft);
49
+ //場所を新しい場所に移動
50
+ $target.style.position = 'absolute';
51
+ $target.style.top = nextTop;
52
+ $target.style.left = nextLeft;
53
+ }
54
+
55
+ </script>
56
+ </head>
57
+ <body>
58
+ <input type="button" onclick="kakudai()" value="拡大">
59
+ <div id="box" style="position:absolute;top:400px;left:200px;width:100px;height:100px;background-color:lightgray;"></div>
60
+ </body>
61
+ </html>
62
+ ```