点到盒子身上任意位置都可以拖动盒子,焦点不变
css代码
* {
margin: 0;
padding: 0;
}
div {
width: 100px;
height: 100px;
border-radius: 10px;
position: absolute;
background: url(背景图路径) no-repeat;
background-size: 100% 100%;
}
body代码
<div></div>
js代码
var isOpen = false
var divEl = document.querySelector('div')
var l
var t
divEl.onmousedown = function (e) {
isOpen = true
e = e || window.event
t = e.offsetY
l = e.offsetX
}
document.onmousemove = function (e) {
e = e || window.event
var x = e.clientX - l
var y = e.clientY - t
if (x <= 0) {
x = 0
}
if (y <= 0) {
y = 0
}
if (x > innerWidth - divEl.offsetWidth) {
x = innerWidth - divEl.offsetWidth
}
if (y > innerHeight - divEl.offsetHeight) {
y = innerHeight - divEl.offsetHeight
}
if (isOpen) {
divEl.style.top = y + 'px'
divEl.style.left = x + 'px'
}
}
divEl.onmouseup = function () {
isOpen = false
}