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/ ...
随机推荐
- 【javascript】iOS Safari 中点击事件失效的解决办法
问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. ...
- [underscore源码学习]——`>>` 运算符和二分查找
这是一篇记录学习 underscore v0.0.5 的fragment,觉得有点意思,和大家分享一下. 先看_.sortedIndex的源码,它用来确定 obj 在 array中的位置(array升 ...
- Centos出现-bash: unzip: command not found的解决办法
利用unzip命令解压缩的时候,出现-bash: unzip: command not found的错误. unzip——命令没有找到,其原因肯定是没有安装unzip. 利用一句命令就可以解决了. ...
- Redis初探,写个HelloWorld
资源获取 https://redis.io/download 从官网上下载redis的源码,使用gcc的安装方式. 安装 make make install 需要达到的效果是,在/usr/local/ ...
- day 55 linux 的常用命令
前言 前面咱们已经成功安装了Linux系统--centos7,那么我们现在提好裤腰带,准备奔向Linux的大门. Linux命令行的组成结构 [root@oldboy_python ~]# [roo ...
- CentOS 安装Scrapy
本文python版本是python3.5.3,关于升级python和安装pip请到:http://www.cnblogs.com/technologylife/p/6242115.html 安装相关包 ...
- sql日期格式处理
sql server中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 ...
- 13-hadoop-入门程序
通过之前的操作, http://www.cnblogs.com/wenbronk/p/6636926.html http://www.cnblogs.com/wenbronk/p/6659481.ht ...
- HTTP状态码列表
经常用的http状态码 1xx消息——请求已被服务器接收,继续处理2xx成功——请求已成功被服务器接收.理解.并接受3xx重定向——需要后续操作才能完成这一请求4xx请求错误——请求含有词法错误或者无 ...
- C语言中两个相同类型的结构体变量之间是可以相互直接赋值的
C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量 ...