实现网页中鼠标拖动图片在指定框中移动

实现网页中鼠标拖动图片在指定框中移动

  简单实现鼠标拖动图片在指定框内移动,使用时只需要修改html文件中对style、script、img(img自己找个图片便可)三个的引用路径。
   在调试网页的时候可以在chrome浏览器中右键->检查,在source中的js文件中设置断点,还可以在watch添加监视,悬浮鼠标于选中的js变量或一小段代码段上也可查看变量或者表达式的当前值。

一、代码展示与解析

1.1 css文件

  此处图片移动的边界div用内联样式的是为了能够在js中通过obj.style.top、obj.style.left、obj.style.height、obj.style.width获取div的位置(若用css定义样式则无法通过此途径获得)。若需要通过css定义样式则在js文件中应该用obj.offsetheight、obj.offsetleft等获取div位置。

//图片样式
img {
	width: 150px;
	height: 150px;
	position: absolute;
	left: 0px;
	top: 0px;
}
//div用内联样式

1.2 js文件

  在window.onload的地方对网页进行初始化,如果网页控制台(可以通过chrome的检查或者其他浏览器相应功能查看console的输出)没有输出“初始化”则说明js、css、html中有地方错误使得网页不会执行初始化(window.onload),可以逐个排查。
  注意数字与像素值(px结尾)不能直接比较而要用parseInt(像素值)转化为数字,如函数mousemove中所示。坐标值从网页左上角开始向右x值增大,向下y值增大。

//全局变量
var isDrag = false; //是否开始拖拽 false 不拖拽
var disX, disY; //鼠标相对于图片的位置



//初始化可以被拖动的图片
window.onload = function() {
	console.log("初始化");

	//初始化被拖动的图片
	var pic1 = document.getElementById('pic');
	enabledrag(pic1);

}

//注册拖动所需事件函数
function enabledrag(obj) {
	obj.onmousedown = mouseDown;
	obj.onmousemove = mouseMove;
	obj.onmouseup = mouseUp;
}


//鼠标按下时
function mouseDown(e) {
	isDrag = true;
	this.style.cursor = 'move';
	e = e || window.event; //兼容性写法
	//鼠标位置
	var x = e.clientX;
	var y = e.clientY;
	//鼠标相对于图片的位置
	disX = x - this.offsetLeft;
	disY = y - this.offsetTop;
}

//鼠标移动时
function mouseMove(e) {
	if (!isDrag) {
		return;
	}
	e = e || window.event; //兼容性写法
	//鼠标位置
	var x = e.clientX;
	var y = e.clientY;
	//若鼠标在框内则修改图片位置
	var filmstage = document.getElementById("filmStage");
	if (x > parseInt(filmstage.style.left) && x < parseInt(filmstage.style.left) + parseInt(filmstage.style.width) && y > parseInt(filmstage.style.top)  && y <parseInt(filmstage.style.top) + parseInt(filmstage.style.height) ) {
		console.log("11");
		this.style.left = x - disX + 'px';
		this.style.top = y - disY + 'px';
	}
	//若鼠标超出框则视为抬起
	else{
		isDrag = false;
		this.style.cursor = "default";
	}


}

//鼠标抬起时
function mouseUp(e) {
	isDrag = false;
	this.style.cursor = 'default';
}

1.3 html文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		@import url("css/images.css");
	</style>
	<script type="text/javascript" src="js/Dragimage.js">
	</script>

</head>
<body>
	<div id="filmStage" style="width: 300px; height: 300px; border-color:blue;border-style:solid; border-width:1;left: 0px;top: 0px;">	
		<img src="img/图片1.jpg" id='pic' draggable='false'>
	</div>

</body>
</html>

源文件:js实现在特定框内拖动图片

参考文献:
JavaScript实现鼠标拖动图片移动效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值