javascript元素跟随鼠标在指定区域运动

元素跟随鼠标在指定区域运动通常是用在商城图片的放大镜中,下面是完整的Demo:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>鼠标区域</title>
	<style type="text/css">
	*{margin:0;padding:0;}
		.area{
			width:400px;
			height:400px;
			margin:30px auto;
			background: #ccc;
			overflow: hidden;
			position: relative;
		}
		.hover{
			border:1px dashed #000;
			width:100px;
			height:100px;
			background: rgba(0,0,0,0.25);
			position: absolute;
			display: none;
			cursor: move;
		}
	</style>
</head>
<body>
	<div id="area" class="area">
		<div class="hover" id="hover">
	</div>
	<script type="text/javascript">
		var $box = document.getElementById("area");
		var $hover = document.getElementById("hover");
		var boxW=$box.offsetWidth,
			boxH=$box.offsetHeight,
			boxLeft=$box.offsetLeft,
			boxTop=$box.offsetTop;
		var startX,startY,hoverW,hoverH;
		$box.onmouseover=function(event){
			var event=event||window.event;
			$hover.style.display="block";
			hoverW=$hover.offsetWidth,
			hoverH=$hover.offsetHeight;
			var x = event.clientX;
			var y = event.clientY;
			$hover.style.left=(x-boxLeft-hoverW/2)+"px";
			$hover.style.top=(y-boxTop-hoverH/2)+"px";
			console.log(boxW+"<br/>"+hoverW)
		}

		$box.onmousemove=function(event){
			var event=event||window.event;
			var x = event.clientX;
			var y = event.clientY;
			var resultX,resultY;
			if(x-boxLeft-50<0){
				resultX=0;
			}else if(x-boxLeft-50>=boxW-hoverW){
				resultX=boxW-hoverW;
			}else{
				resultX=x-boxLeft-50;
			}
			if(y-boxTop-50<0){
				resultY=0
			}else if(y-boxTop-50>=boxH-hoverH){
				resultY=boxH-hoverH;
			}else{
				resultY=y-boxTop-50;
			}
			$hover.style.left=resultX+"px";
			$hover.style.top=resultY+"px";
		}
		$box.onmouseout = function(event) {
			var event=event||window.event;
			var x = event.clientX;
			var y = event.clientY;
			var divx1 = $box.offsetLeft;
			var divy1 = $box.offsetTop;
			var divx2 = $box.offsetLeft + $box.offsetWidth;
			var divy2 = $box.offsetTop + $box.offsetHeight;
			if (x < divx1 || x > divx2 || y < divy1 || y > divy2) {
				$hover.style.display="none";
			}
		}

	</script>
</body>
</html>

  主要是两个关键点:

1、获取鼠标当前位置,然后设置运动元素的当前位置为鼠标位置;

2、判断元素是否靠近父级元素的边界,设置临界值;

时间: 2024-12-18 21:46:24

javascript元素跟随鼠标在指定区域运动的相关文章

通用元素跟随鼠标移动效果

封装鼠标指针定位是一件很有意义的事情,这样在日常开发中就不需要再为鼠标指针定位问题而犯愁了. 设计思路:能够根据传递的具体对象,以及相对鼠标指针的偏移值,即命令该对象能够跟随鼠标移动. JS代码: function getMousePos(o,x,y,event){ //o-->对象;x,y-->相对鼠标指针的偏移距离;event-->事件对象; var posX = 0,posY = 0; //临时变量 var event = event || window.event; //标准化事

元素跟随着滚动条运动

有这种情况,页面中的某些元素需要跟随滚动条运动,位置一直在页面中的某个位置: 思路: 当页面滚动的时候,一直获取滚动条距离顶部的距离,当顶部的距离等于某个数值的时候,直接开始改变这个元素的position的值为fixed,不等于这个数值的时候为relative: 注意的是需要在html中写一个和这个元素一样的元素,不等于数值的这个元素为display:none,等于数值的这个元素为display:block.这个是为了防止当需要固定的元素 脱离文档流的时候,下面的元素向上移动,为了占位置的: 主

完整的html+css+javascript实现跟随鼠标移动显示选中效果

1,显示效果: 2,html结构 1 <div class="process_list-lpu"> 2 <div class="process_line"></div> 3 <div class="content_list"> 4 <ul> 5 <li><a href="javascipt:;">End customer get product

javascript创建跟随鼠标好玩的东西

不说话,直接上代码. css: #createGoDivBox{ display: none; } #createGoDivBox div{ background-color: #00A6C2; position: absolute; border-radius: 50%; } js: init(); function init(){ // 获取body var parBox = document.body || document.getElementsByTagName('body')[0];

WPF DragDrop事件元素跟随

前一段时间项目里面要实现一个鼠标拖动一个元素到另外一个元素上面并且赋值的功能,由于要在surface上运行,拖动的时候手指会挡住系统默认的拖动图标,导致用户意识不到自己是不是在拖动着东西,所以要解决这个问题. 初始想法 一开始在的设想是,拖动开始时新建一个元素要拖动的元素,然后设置次元素跟随鼠标移动,这里遇到个问题就是,当使用DoDragDrop事件的时候,捕捉不到鼠标的坐标变动,以至于无法让新建的元素跟随移动.要实现功能必须放弃DoDragDrop事件,但是当时很多已经写好的功能都是围绕这个事

实现div在固定区域跟随鼠标移动点击拖动而产生的变化

一.思路 1.在外层增加一个 DIV 容器,并设置好容器的大小.(即:宽和高) 当容器存在边框的时候,由于这里还没找到获取的方法,所以,在容器边框大于 0 的时候,获得的容器的限制区域的坐标会有误差. 为了避免这情况,可以在多加一次容器,有边框样式的在外层,无边框样子的在内层. 例: <style> #mainContainer { border: 10px solid #990000; width: 600px; height: 300px; } #innerContainer { widt

javascript 跟随鼠标移动的提示框的一个小demo

下面提供一种跟随鼠标移动的提示框的思路,方便在以后工作中应用,主要是应用到鼠标移动产生的数值来进行移动提示框的定位... CSS代码   .box{height:100px;width:100px;background:orange;position:relative;margin:40px;} .move{height:20px;width:20px;background:red;position:absolute;left:0px;top:0px;display:none;} HTML代码

【jQuery】一个跟随鼠标运动的图层

一.基本目标 写一个跟随鼠标运动的图层, 图层中显示当前鼠标的位置, 如下图, 此图层之所以使用jQuery,而不是因为javascript,是因为jQuery的代码其便于兼容当前的所有主流的浏览器,至少IE8是没有任何问题的,不用像javascript大段大段的代码都用到兼容性上面了-- 二.制作过程 本次实验的核心是jquery里面的mousemove事件, 鼠标移动则触发. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran

鼠标悬浮弹出跟随鼠标移动的带箭头的信息层

鼠标悬浮弹出跟随鼠标移动的带箭头的信息层:很多网站,当鼠标悬浮在一个元素上的时候能够弹出一个信息说明层,并且此层能够跟随鼠标移动,同时弹出的层带有箭头,此箭头指向鼠标悬浮的元素,下面就通过实例代码简单介绍一下如何实现此效果.代码实例如下: <!DOCTYPE html> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"