流れ:
全体ソースコードより、
・右クリックでメニュー表示
・「画像」を選択
・ファイル選択
・要素をクリックした位置に画像が表示される
・画像をクリック→ドラッグ(mousemove)で画像を移動
やりたいこと:
画像をクリックした後にmousemoveイベントで画像の拡大・縮小を行いたい。
イメージとしてエクセルの画像操作と同じく、
・画像中央をクリック→ドラッグ(mousemove)で画像の移動を行う(実装済み)
・画面端をクリック→ドラッグ(mousemove)で画像の拡大・縮小を行う。
問題点:
・上記2点は同じ要素かつイベントなので、一つの要素に2つの同じイベント処理が行えない(移動と拡大・縮小)
一つの要素の一部分のみにイベントを付加するという事は不可能?(この場合だと画面端)
参考記事:
vue.jsになりますが、参考記事がこちらです。
https://reon777.com/2020/03/24/js-change-height-by-mouse/
ご教示頂きたくお願い致します。
全体ソースコード:
https://codepen.io/mio-rei/pen/ExZBYEJ
ソースコード抜粋:
JavaScript
1// マウスダウン(要素の移動 初期動作) 2 const mouseDown = (e) => { 3 let t =e.target; 4 if(t.nodeName != 'TEXTAREA' && t.nodeName != 'IMG') return; 5 obj.elm = t; 6 obj.setOffset(e); 7 }; 8 9 10// マウスムーブ(要素の移動) 11 const mouseMove = (e) => { 12 if(!obj.elm ) return; 13 obj.setPos(e, obj); 14 obj.setOffset(e); 15 }; 16 17 18// マウスアップ(要素の移動 キャンセル) 19 const mouseUp = () => { 20 if(obj.elm) { 21 console.log(obj.elm); 22 obj.elm = null}; 23 console.log(obj.elm); 24 25 }; 26 27~~~~~~~~~~~~~~ 28 29 // イベントセット 30 const setEvent = (elm, evt, func) => { 31 elm.addEventListener(evt, func); 32 }; 33 34 // イベントセット実行 35 setEvent(element, 'mousedown', mouseDown); 36 setEvent(element, 'mousemove', mouseMove); 37 setEvent(document, 'mouseup', mouseUp); 38 setEvent(element, "contextmenu", contextMenu); 39 setEvent(element, 'click', contextMenuHiden); 40 } 41}); 42
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/12 04:29