在一个盒子里面再放一个盒子,里面的盒子沿着外面盒子边缘运动,用js写
时间: 2024-05-04 13:16:03 浏览: 158
可以使用以下代码实现:
```javascript
//获取外层盒子和内层盒子元素
var outerBox = document.getElementById("outerBox");
var innerBox = document.getElementById("innerBox");
//定义变量存储初始位置以及移动距离
var startX = 0;
var startY = 0;
var moveX = 0;
var moveY = 0;
//鼠标按下时记录位置
outerBox.onmousedown = function(e){
startX = e.clientX;
startY = e.clientY;
}
//鼠标移动时移动内层盒子
outerBox.onmousemove = function(e){
moveX = e.clientX - startX;
moveY = e.clientY - startY;
//设置内层盒子移动距离以及边界限制
var left = innerBox.offsetLeft + moveX;
var top = innerBox.offsetTop + moveY;
if(left < 0){
left = 0;
}
if(top < 0){
top = 0;
}
if(left > outerBox.offsetWidth - innerBox.offsetWidth){
left = outerBox.offsetWidth - innerBox.offsetWidth;
}
if(top > outerBox.offsetHeight - innerBox.offsetHeight){
top = outerBox.offsetHeight - innerBox.offsetHeight;
}
innerBox.style.left = left + "px";
innerBox.style.top = top + "px";
startX = e.clientX;
startY = e.clientY;
}
//鼠标松开时停止移动
outerBox.onmouseup = function(e){
moveX = 0;
moveY = 0;
}
```
上述代码中,首先获取外层盒子和内层盒子元素。然后定义变量存储初始位置以及移动距离。接着设置鼠标按下事件,记录鼠标位置。在鼠标移动事件中,计算出鼠标移动距离,并根据内层盒子的位置和移动距离计算出新的位置,并进行边界限制。最后设置内层盒子的位置和存储新的位置。在鼠标松开事件中停止移动即可。
阅读全文