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、判断元素是否靠近父级元素的边界,设置临界值;
javascript元素跟随鼠标在指定区域运动的更多相关文章
- js进阶 12-3 如何实现元素跟随鼠标移动
js进阶 12-3 如何实现元素跟随鼠标移动 一.总结 一句话总结:获取鼠标位置,将鼠标位置设置为元素偏移即可. 1.用什么事件获取鼠标位置? 用mousemove可以获取鼠标移动的时候的位置 $(d ...
- HTML元素跟随鼠标一起移动,网页中回到顶部按钮的实现
对象跟随鼠标: 1.对象css设置绝对定位position: absolute; 2.获取鼠标坐标: 3.通过鼠标坐标计算出对象坐标位置,并设置为css定位的位置: document.onmousem ...
- 完整的html+css+javascript实现跟随鼠标移动显示选中效果
1,显示效果: 2,html结构 <div class="process_list-lpu"> <div class="process_line&quo ...
- javascript div跟随鼠标移动
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- javascript创建跟随鼠标好玩的东西
不说话,直接上代码. css: #createGoDivBox{ display: none; } #createGoDivBox div{ background-color: #00A6C2; po ...
- WPF DragDrop事件元素跟随
前一段时间项目里面要实现一个鼠标拖动一个元素到另外一个元素上面并且赋值的功能,由于要在surface上运行,拖动的时候手指会挡住系统默认的拖动图标,导致用户意识不到自己是不是在拖动着东西,所以要解决这 ...
- Javascript之盒子拖拽(跟随鼠标、边界限定、轨迹回放)
本文通过拖拽案例,实现"跟随鼠标.边界限定.轨迹回放"三大效果: 完整代码中有详尽注释,故不再进行细致讲解: 对于案例中需要注意的重点或易错点问题,会总结在最后. 效果图(仅演示左 ...
- html5跟随鼠标炫酷网站引导页动画特效
html5跟随鼠标炫酷网站引导页动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹.html5炫酷网站引导页,鼠标跟随出特效. 体验效果:http://hovertree.com/tex ...
- JS打造的跟随鼠标移动的酷炫拓扑图案
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- flask-mysqldb安装时EnvironmentError: mysql_config not found
安装时候的日志如下: sh: : mysql_config: not found Traceback (most recent call last): File , in <module> ...
- Flask从入门到精通之Flash消息
请求完成后,有时需要让用户知道状态发生了变化.这里可以使用确认消息.警告或者错误提醒.一个典型例子是,用户提交了有一项错误的登录表单后,服务器发回的响应重新渲染了登录表单,并在表单上面显示一个消息,提 ...
- 多线程学习:Volatile与Synchronized的区别、什么是重排序
java线程的内存模型 java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问. 上图 ...
- 【LOJ 2542】【PKUWC2018】 随机游走(最值反演 + 树上期望dp)
哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[ ...
- docker registry push错误“server gave HTTP response to HTTPS client”
系统环境:centos7 docker版本: 1.12.3(注意版本,可能存在不同版本设置不同的情况) docker registry版本:2.4.1 问题: 成功安装docker registry, ...
- 对称(DES/AES)与非对称(RSA/SSL/数字证书)加密介绍及实际应用
本文不对具体的算法做深入研究,只是讲解各种安全算法的原理和使用场景. 一.数据校验算法 数据校验,是为保护数据的完整性,用一种指定的算法对原始数据计算出的一个校验值.当接收方用同样的算法再算一次校验值 ...
- postman—post方式几种请求参数区别
postman中 form-data.x-www-form-urlencoded.raw.binary的区别 版权声明参考: https://blog.csdn.net/wangjun5159/art ...
- Tensorflow 方法记录
1.tf.convert_to_tensor:传入的list必须是一个有固定长度的list,如果为2维的list,第二维的list的长度必须是固定. 2.tf.layers.conv1d(),默认宽卷 ...
- Term Weighting
对文本分词后,接下来需要对分词后的每个term计算一个权重,重要的term应该给与更高的权重.举例来说,“什么产品对减肥帮助最大?”的term weighting结果可能是: “什么 0.1,产品 0 ...
- MVC与MVVM设计模式理解
MVC设计模式(View和Model之间不能直接通信) MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller: Model负责存储.定义.操作数据.从网络中获取 ...