やりたいこと:
画像の拡大・縮小イベントを作成したが、左上を基点にしか拡大・縮小できない。
左上以外の要素の四隅(右上、右下、左下)を基点にして拡大・縮小が出来る様にしたい。
試してみた内容:
transform-originプロパティをを試してみたが要素を回転させる時の基点だったので、カーソルの座標位置を取得しての拡大・縮小時の基点には対応してなかった。
参考資料:
https://www.conifer.jp/csstest/Image-resize-crop/Js-resize-crop.html
※参考資料はjQuery
全体ソースコード:
https://codepen.io/mio-rei/pen/xxqZxGq
ソースコード抜粋:
JavaScript
1// マウスダウン(要素の移動 初期動作) 2 const mouseDown = (e) => { 3 let t =e.target; 4 if(t.nodeName != 'IMG' && t.nodeName != 'TEXTAREA') return; 5 obj.elm = t; 6 obj.setOffset(e); 7 if ( e.offsetX < 5 || e.offsetX > t.offsetWidth -5 || 8 e.offsetY < 5 || e.offsetY > t.offsetHeight -5) { 9 console.log('test成功です'); 10 element.addEventListener('mousemove', mousemove); 11 } else { 12 element.addEventListener('mousemove', mouseMove); 13 } 14 }; 15 16 17// マウスムーブ(要素の移動) 18 const mouseMove = (e) => { 19 if(!obj.elm ) return; 20 obj.setPos(e, obj); 21 obj.setOffset(e); 22 }; 23 24 25 const mousemove = (e) => { 26 const elmsubX = obj.elm.getBoundingClientRect().left - cRect().left; 27 const elmsubY = obj.elm.getBoundingClientRect().top - cRect().top; 28 29 obj.elm.style.width = e.clientX - cRect().left - elmsubX + 'px'; 30 obj.elm.style.height = e.clientY - cRect().top - elmsubY + 'px'; 31 }
回答1件
あなたの回答
tips
プレビュー