如何获取 具备浮动 float:left 或foloat:right 的div 的 绝对位置? 我个人的思路是 查找该div 前面是否具备其他htmlElement 如果有 则获取他们的 offsetWidth 然后 用其父元素的left+ 这些width的和 获取当其left但这实在效率低下. 有没有即有的方法. 获取到真正的 绝对位置呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看这样行不<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><div style="float:left;width:400px;height:400px;border:#000 solid 1px;" id="div1"> div1 <div style="margin:50px;border:#000 solid 1px;width:100px;height:100px;" id="div2"> div2 </div> <div style="margin:50px;border:#000 solid 1px;float:right;width:100px;height:100px;" id="div3"> div3 </div></div><br /><span id="info"></span><script type="text/javascript">function getDomOffset(el){ for(var lx=0,ly=0;el!=null; el=el.offsetParent) { lx+=el.offsetLeft; ly+=el.offsetTop; } return {x:lx,y:ly} }var info = document.getElementById("info");document.onmousemove=function(){ var evt = window.event || arguments[0]; var el = evt.target || evt.srcElement; if(el.tagName.toLowerCase()=="div") { var pos = getDomOffset(el); info.innerHTML = el.id + "的left是" + pos.x + ",top是" + pos.y; }}</script></body></html> 我看着 4 楼和楼主的结果一样吧.都是加上了它父亲节点的left 和 top 4 楼的方法 和我 1楼说的方法是一样的 都是 通过 获取父元素 的left 然后相加 .这样对待 float:left 的东西 是不行的..我看了下 如果把float:left前面的元素都强制声明为 block 级元素 似乎结果好了一些. 没看仔细,方法是一样了不过我写的那个,第一个div就是float:left的,没问题啊 您好, 我在写一个完全dom式的控件. 要控制的div前面有几个 img 为了 让img 和这个div在一行. 我强制他们都 float:left 这时 取不到 div的正常的 left值 谢谢 大家. 我找到结症根源了...原来在 safari 和google浏览器中 如果存在图片元素 而你没给图片元素指定 宽高 用offset是获取不到 它的 width height的 导致 图片后面的元素 使用offsetLeft 也就无法获取到 正确的位置..... 所以 只要给图片元素都指定一个 宽和高 就全都正常了.... 其实和float:left 并没有关系.... onclick事件如何写跳转到winform界面? 请教用js做类似confirm()函数的层 个人珍藏javascript菜单特效 请真正的JavaScript高手解答 请问如何知道控件的类型? 怎么检测字串为 double? currency? 急找高手! 触发脚本的问题?? 关窗不要提示信息窗口 请问在网页中如何实现当鼠标指向链接的字体时,链接的字体变色且背景色不变。 正则替换出现问题 孙鑫谈怎样学习编程
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div style="float:left;width:400px;height:400px;border:#000 solid 1px;" id="div1">
div1
<div style="margin:50px;border:#000 solid 1px;width:100px;height:100px;" id="div2">
div2
</div>
<div style="margin:50px;border:#000 solid 1px;float:right;width:100px;height:100px;" id="div3">
div3
</div>
</div>
<br />
<span id="info"></span><script type="text/javascript">
function getDomOffset(el)
{
for(var lx=0,ly=0;el!=null; el=el.offsetParent)
{
lx+=el.offsetLeft;
ly+=el.offsetTop;
}
return {x:lx,y:ly}
}var info = document.getElementById("info");
document.onmousemove=function()
{
var evt = window.event || arguments[0];
var el = evt.target || evt.srcElement;
if(el.tagName.toLowerCase()=="div")
{
var pos = getDomOffset(el);
info.innerHTML = el.id + "的left是" + pos.x + ",top是" + pos.y;
}
}
</script>
</body>
</html>
我看了下 如果把float:left前面的元素都强制声明为 block 级元素 似乎结果好了一些.
没看仔细,方法是一样了不过我写的那个,第一个div就是float:left的,没问题啊
您好, 我在写一个完全dom式的控件. 要控制的div前面有几个 img 为了 让img 和这个div在一行. 我强制他们都 float:left 这时 取不到 div的正常的 left值
原来在 safari 和google浏览器中 如果存在图片元素 而你没给图片元素指定 宽高 用offset是获取不到 它的 width height的 导致 图片后面的元素 使用offsetLeft 也就无法获取到 正确的位置..... 所以 只要给图片元素都指定一个 宽和高 就全都正常了.... 其实和float:left 并没有关系....