pageX、pageY及父元素的页面坐标使提示框跟随鼠标移动
2017-08-08 17:35
549 查看
提示框相对父元素的定位,要计算提示框的left和top属性。所以公式应该为提示框的相对坐标=鼠标的页面坐标-父元素的页面坐标
计算鼠标的页面坐标:
event.pageX
event.pageY
计算父元素的页面坐标:
首先写一个js获取元素到页面顶部和左部距离的方法
参考: js中获取页面任意元素距页面顶部的总距离
参考:阮一峰的博客 用Javascript获取页面元素的位置
当父元素就是body,即父元素的距离页面顶部和页面左部的距离为0时,可以不用减去父元素的页面坐标,即使用以下代码
当父元素的父元素即为body时,可以直接使用父元素的scrollTop作为父元素的页面坐标,可以参考如下代码
javascript 跟随鼠标移动的提示框的一个小demo
js获取一个元素到页面顶部和左部的距离
jquery 获取一个元素到页面顶部的距离
var X = $('#DivID').offset().top;
计算鼠标的页面坐标:
event.pageX
event.pageY
计算父元素的页面坐标:
首先写一个js获取元素到页面顶部和左部距离的方法
function getElementPosition(elem){ var elemTop = elem.offsetTop;//获得elem元素距相对定位的父元素的top var elemLeft = elem.offsetLeft; elem = elem.offsetParent;//将elem换成起相对定位的父元素 while(elem!=null){//只要还有相对定位的父元素 elemTop +=elem.offsetTop;//获得父元素 距他父元素的top值,累加到结果中 elemLeft += elem.offsetLeft; elem = elem.offsetParent;//再次将elem换成他相对定位的父元素上; } return { elemTop: elemTop, elemLeft: elemLeft }; }
参考: js中获取页面任意元素距页面顶部的总距离
参考:阮一峰的博客 用Javascript获取页面元素的位置
//获取父元素的页面坐标 var parentPosition = getElementPosition(document.getElementById("funnel-chart-canvas")); for(i=0;i<len-1;i++){ (function(i){ document.getElementById(rateId[i]).onmouseover = function(evt){ $('#tip').empty(); if(tureRate[i]>yzRate[i]) tipContent = '状态:正常<br>流程完成率实际值:'+toPercent(tureRate[i])+'%<br>流程完成率指导值:'+toPercent(yzRate[i])+'%'; else tipContent = '状态:<span style="color:red;font-size:14px;">异常</span><br>流程完成率实际值:'+toPercent(tureRate[i])+'%<br>流程完成率指导值:'+toPercent(yzRate[i])+'%'; $('#tip').append(tipContent); $('#tip').css("display","block"); } }(i)); document.getElementById(rateId[i]).onmousemove = function(evt){ var pageX = event.pageX; var pageY = event.pageY; if(pageX === undefined){ pageX = event.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft); } if(pageY === undefined){ pageY = event.clientY +(document.body.scrollTop || document.documentElement.scrollTop); } $('#tip').css({ 'top' : (pageY-parentPosition.elemTop+15) + 'px', 'left': (pageX-parentPosition.elemLeft+15)+ 'px' }); } document.getElementById(rateId[i]).onmouseout = function(evt){ $('#tip').hide(); } }
当父元素就是body,即父元素的距离页面顶部和页面左部的距离为0时,可以不用减去父元素的页面坐标,即使用以下代码
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery鼠标经过淡入显示提示框 演示</title> <script type="text/JavaScript" src="../js/jquery-1.7.2.min.js"></script> <style type="text/css"> .div{ border:1px solid #0000FF; float:left; width:200px; height:200px; margin:10px;} div#tip{ position:absolute; width:100px; height:auto; border:1px solid #00CC66;} .div1{border:0;cursor:pointer;width:auto; height:auto;} </style> </head> <body> <div id="tip" style="display:none">提示内容</div> <div class="div"></div> <div class="div"></div> <div class="div div1">enenba</div> <script type="text/javascript"> $(document).ready(function(){ $('.div').hover( function(){ $('#tip').fadeIn('slow'); } ); $('.div').mousemove(function(e){ var top = e.pageY+5; var left = e.pageX+5; $('#tip').css({ 'top' : top + 'px', 'left': left+ 'px' }); }); $('.div').mouseout(function(){ $('#tip').hide(); }); }); </script> </body> </html>参考jquery 鼠标停留显示提示框,提示框位置跟随鼠标移动
当父元素的父元素即为body时,可以直接使用父元素的scrollTop作为父元素的页面坐标,可以参考如下代码
javascript 跟随鼠标移动的提示框的一个小demo
js获取一个元素到页面顶部和左部的距离
var getPos=function(o){//取元素坐标 var x = 0, y = 0; do{ x += o.offsetLeft; y += o.offsetTop; }while(o=o.offsetParent); return {'x':x,'y':y}; }
jquery 获取一个元素到页面顶部的距离
var X = $('#DivID').offset().top;
相关文章推荐
- 页面内元素跟随鼠标移动和右键菜单组件功能
- jquery实现的提示浮层跟随鼠标移动
- 设计一个含有一个表单的页面,并且在表单上放入一个文本框。编写程序,当鼠标在页面上移动时,鼠标的坐标将显示在这个文本框中。
- JS获取area元素坐标和鼠标在页面中的位置
- 提示信息 感应鼠标移动事件 自动显示url页面内容
- javascript获取鼠标坐标跟随控制层渐显信息提示效果(有BUG在调试中)
- JSP页面 鼠标移动到页面元素上时,显示完整内容
- javascript跟随鼠标x,y坐标移动的字效果
- jquery 鼠标停留显示提示框,提示框位置跟随鼠标移动
- jquery元素跟随鼠标移动
- 让元素跟随鼠标移动
- JavaScript读书笔记:页面元素的坐标和鼠标事件的坐标
- js--在页面元素上(移动到或获取焦点)、鼠标离开(或失去焦点)
- js-事件1_获取鼠标坐标clientX+scrollLeft及兼容性写法_跟随鼠标移动的divs
- js原生代码编写一个鼠标在页面移动坐标的检测功能,兼容各大浏览器
- jquery实现的提示浮层跟随鼠标移动
- 【技术】提示浮层跟随鼠标移动
- 实现页面方块跟随鼠标移动而移动
- 分享一个Unity3D点击模型跟随鼠标移动的小脚本(包括屏幕视图到三维空间的坐标转换)
- javascript 跟随鼠标移动的提示框的一个小demo