Created
July 18, 2018 17:24
-
-
Save zaru/cd1974daa73231f1073505962713711d to your computer and use it in GitHub Desktop.
選択範囲のボックスを作成するJS雑なサンプルコード
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(() => { | |
let dragStart = false | |
let div | |
let startX, startY = 0 | |
const evtMouseDown = (e) => { | |
dragStart = true | |
document.body.style.userSelect = 'none' | |
div = document.createElement('div') | |
div.style.backgroundColor = '#ddd' | |
div.style.border = '1px solid #aaa' | |
div.style.opacity = 0.5 | |
div.style.position = 'absolute' | |
div.style.zIndex = 9999 | |
startX = e.pageX | |
startY = e.pageY | |
document.body.appendChild(div) | |
console.log('mouse down', e) | |
} | |
const evtMouseMove = (e) => { | |
if (dragStart) { | |
if (e.pageX > startX && e.pageY > startY) { | |
// 右下 | |
div.style.left = `${startX}px` | |
div.style.top = `${startY}px` | |
div.style.width = `${e.pageX - startX}px` | |
div.style.height = `${e.pageY - startY}px` | |
} else if (e.pageX > startX && e.pageY < startY) { | |
// 右上 | |
div.style.left = `${startX}px` | |
div.style.top = `${startY - (startY - e.pageY)}px` | |
div.style.width = `${e.pageX - startX}px` | |
div.style.height = `${startY - e.pageY}px` | |
} else if (e.pageX < startX && e.pageY > startY) { | |
// 左下 | |
div.style.left = `${startX - (startX - e.pageX)}px` | |
div.style.top = `${startY}px` | |
div.style.width = `${startX - e.pageX}px` | |
div.style.height = `${e.pageY - startY}px` | |
} else { | |
// 左上 | |
div.style.left = `${startX - (startX - e.pageX)}px` | |
div.style.top = `${startY - (startY - e.pageY)}px` | |
div.style.width = `${startX - e.pageX}px` | |
div.style.height = `${startY - e.pageY}px` | |
} | |
console.log('mouse move', e) | |
} | |
} | |
const evtMouseUp = (e) => { | |
dragStart = false | |
document.body.style.userSelect = 'auto' | |
console.log('mouse up', e) | |
} | |
const addEvent = () => { | |
document.addEventListener('mousedown', evtMouseDown) | |
document.addEventListener('mousemove', evtMouseMove) | |
document.addEventListener('mouseup', evtMouseUp) | |
} | |
addEvent() | |
})() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment