js获取div到body左侧距离

详细注释... 详细注释 展开
 我来答
小星星教育知识分享
高粉答主

2019-12-10 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67132

向TA提问 私信TA
展开全部

1、拖动后记录x,y值

给div加上mousePosition事件

function mousePosition(evt){  

evt = evt || window.event;  

return {  

x : evt.clientX + document.body.scrollLeft - document.body.clientLeft,  

y : evt.clientY + document.body.scrollTop - document.body.clientTop  

}  

}  

2、打开页面div定位

$(“div”).attr("top",y).attr("left",x);

扩展资料

在用js获取元素的位置之前,元素在页面的位置的计算公式,如下:

元素在页面的位置=此元素相对浏览器视窗的位置+浏览器滚动条的值;

用getBoundingClientRect()方法来获得某个元素相对浏览器视窗的位置 {这个方法返回的是一个对象,即Object,该对象具有4个属性:top,left,right,bottom }。

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Demo</title>

</head>

<body style="width:2000px; height:1000px;">

<div id="demo" style="position:absolute; left:518px; right:100px; width:500px; height:500px;

background:#CC0000; top: 114px;">Demo为了方便就直接用绝对定位的元素</div>

</body>

</html>

<script>

document.getElementById('demo').onclick=function (){

if (document.documentElement.getBoundingClientRect) {

alert("left:"+this.getBoundingClientRect().left)

alert("top:"+this.getBoundingClientRect().top)

alert("right:"+this.getBoundingClientRect().right)

alert("bottom:"+this.getBoundingClientRect().bottom)

var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;

var Y = this.getBoundingClientRect().top+document.documentElement.scrollTop;

alert("Demo的位置是X:"+X+";Y:"+Y)

}

}

</script>

雨月蓝
推荐于2017-09-10 · TA获得超过765个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:250万
展开全部
window.onload = function () {//文档加载完成时
getPoint(document.getElementById("div1"));//获取ID为div1元素的坐标
}
function getPoint(obj) { //获取某元素以浏览器左上角为原点的坐标
var t = obj.offsetTop; //获取该元素对应父容器的上边距
var l = obj.offsetLeft; //对应父容器的上边距
//判断是否有父容器,如果存在则累加其边距
while (obj = obj.offsetParent) {//等效 obj = obj.offsetParent;while (obj != undefined)
t += obj.offsetTop; //叠加父容器的上边距
l += obj.offsetLeft; //叠加父容器的左边距
}
alert("top: " + t + " left: " + l);
}
更多追问追答
追问
为什么不写
随意事件触发
function getPoint() {
var t = document.getElementById("div").offsetTop;
var l = document.getElementById("div").obj.offsetLeft;
}
父容器的处理很nice
呵呵,感谢,请继续,修改代码 一次性解决下面一个问题 ,非常感谢。
鼠标在div上。 鼠标到 div左上角的距离
追答
这个是封装,以便重复调用

function getPoint(obj, e) { //获取某元素以浏览器左上角为原点的坐标
var t = obj.offsetTop; //获取该元素对应父容器的上边距
var l = obj.offsetLeft; //对应父容器的上边距
//判断是否有父容器,如果存在则累加其边距
while (obj = obj.offsetParent) {//等效 obj = obj.offsetParent;while (obj != undefined)
t += obj.offsetTop; //叠加父容器的上边距
l += obj.offsetLeft; //叠加父容器的左边距
}
var newe = e || window.event;
document.getElementById("ddd").innerHTML = "top: " + t + " left: " + l + " x: " + (newe.clientX - l) + " y: " + (newe.clientY - t);
}

sadjkfhldskjfhasd

sadfasdfsadfasdfsadfasdfsadfasdf

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式