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、判断元素是否靠近父级元素的边界,设置临界值;
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HTML5 FormData实现文件上传实例
原文: HTML5 FormData实现文件上传实例 表单提交,文件上传是一个常用又十分麻烦的功能,以前要上传文件通常都是借助插件或者flash来实现,噼里啪啦的加载一大堆东西。自从有了HTML5的FormData后,老板再也不用担心我的上传了。 FormData可以把它理解成一个虚拟的表单对象,它只有一个方法append,这个可以在浏览器console一下就知道了。我们可以通过append向FormData里面添加各种需要提交的数据。 你可以先创建一个空的FormData对象,然后使用append()方法向该对象里添加字段,如下:var oMyForm = new FormData(); oMyForm.append("username", "Groucho"); oMyForm.append("accountnum", 123456); // 数字123456被立即转换成字符串"123456" // fileInputElement中已经包含了用户所选择的文件 oMyForm.append("userfile", fileInputElement.files[0]);var oRe...
- 下一篇
jsonpweb端跨域资源请求
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80547783 jsonp解决跨域请求只能get 因为jisonp请求是基于javascript 而它只能 用get
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用