元素跟随鼠标在指定区域运动通常是用在商城图片的放大镜中,下面是完整的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、判断元素是否靠近父级元素的边界,设置临界值;

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

  1. js进阶 12-3 如何实现元素跟随鼠标移动

    js进阶 12-3 如何实现元素跟随鼠标移动 一.总结 一句话总结:获取鼠标位置,将鼠标位置设置为元素偏移即可. 1.用什么事件获取鼠标位置? 用mousemove可以获取鼠标移动的时候的位置 $(d ...

  2. HTML元素跟随鼠标一起移动,网页中回到顶部按钮的实现

    对象跟随鼠标: 1.对象css设置绝对定位position: absolute; 2.获取鼠标坐标: 3.通过鼠标坐标计算出对象坐标位置,并设置为css定位的位置: document.onmousem ...

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

    1,显示效果: 2,html结构 <div class="process_list-lpu"> <div class="process_line&quo ...

  4. javascript div跟随鼠标移动

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

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

    不说话,直接上代码. css: #createGoDivBox{ display: none; } #createGoDivBox div{ background-color: #00A6C2; po ...

  6. WPF DragDrop事件元素跟随

    前一段时间项目里面要实现一个鼠标拖动一个元素到另外一个元素上面并且赋值的功能,由于要在surface上运行,拖动的时候手指会挡住系统默认的拖动图标,导致用户意识不到自己是不是在拖动着东西,所以要解决这 ...

  7. Javascript之盒子拖拽(跟随鼠标、边界限定、轨迹回放)

    本文通过拖拽案例,实现"跟随鼠标.边界限定.轨迹回放"三大效果: 完整代码中有详尽注释,故不再进行细致讲解: 对于案例中需要注意的重点或易错点问题,会总结在最后. 效果图(仅演示左 ...

  8. html5跟随鼠标炫酷网站引导页动画特效

    html5跟随鼠标炫酷网站引导页动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹.html5炫酷网站引导页,鼠标跟随出特效. 体验效果:http://hovertree.com/tex ...

  9. JS打造的跟随鼠标移动的酷炫拓扑图案

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 前端ajax传数据成功发送,但后端接收不到

    前几天遇到这样的问题,找了好久,是在ajax     contentType属性设置的问题. contentType默认是application/x-www-form-urlencoded    但是 ...

  2. Storm-kafka源码分析之Config相关类

    要创建一个KafkaSpout对象,必须要传入一个SpoutConfig对象,KafkaSpout的构造函数定义如下: public KafkaSpout(SpoutConfig spoutConf) ...

  3. Android之常用类库

    Android之常用类库 android.app :提供高层的程序模型.提供基本的运行环境android.content :包含各种的对设备上的数据进行访问和发布的类android.database ...

  4. android应用程序的混淆打包

    android应用程序的混淆打包 1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示: target=android- ...

  5. node 本地静态服务器

    直接上代码 const connect = require("connect"); const serveStatic = require("serve-static&q ...

  6. POJ 2379

    #include <iostream> #include <algorithm> #define MAXN 1005 using namespace std; struct n ...

  7. 页面按钮埋点+跟踪location.search

    <a href="javascript: void(0)" onclick="setUrl('https://baoxian.pingan.com/pa18shop ...

  8. Android之Activity界面跳转--生命周期方法调用顺序

    这本是一个很基础的问题,很惭愧,很久没研究这一块了,已经忘得差不多了.前段时间面试,有面试官问过这个问题.虽然觉得没必要记,要用的时候写个Demo,打个Log就清楚了.但是今天顺手写了个Demo,也就 ...

  9. QMYSQL driver not loaded

    QT5 连接 QMYSQL 数据库时出现错误:QMYSQL driver not loaded. 解决方法如图:(图中使用指令:ldd libqsqlmysql.so) 从结果图显示中:libmysq ...

  10. 原生js动态添加style,添加样式

    原生js动态添加style,添加样式 第一种 var style="[assign-url='"+str+"']{display:initial}"; var ...