首页 > 代码库 > offsetLeft与offsetTop详解

offsetLeft与offsetTop详解

offsetLeft与offsetTop使用方法一样,只是一个是找距离定位父级(position:relative)左边的距离,一个是找距离定位父级上边的距离

没有定位则找body,我们还是看看ie7以下的情况吧。

先看div都设置了宽高的情况:

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title><style>body{margin:0;padding:0;}#d1{width:200px;height:200px;padding:50px;background:red;}#d2{width:100px;height:100px;padding:50px;background:blue;}#d3{width:100px;height:100px;background:yellow;}</style></head><body><div id="d1">    <div id="d2">        <div id="d3"></div>    </div></div><script>var dom = document.getElementById(d3);alert(dom.offsetLeft);</script></body></html>

没有设置定位,ie7下竟然是50px,是不是很诡异:

技术分享

我们设置一下定位试试看:

#d2{width:100px;height:100px;padding:50px;background:blue;position:relative;}

没有问题,依旧是50px

技术分享

 

继续测试,我们把div的宽高去掉:

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title><style>body{margin:0;padding:0;}div{padding:50px;}#d1{background:red;}#d2{background:blue;position:relative;}#d3{background:yellow;}</style></head><body><div id="d1">    <div id="d2">        <div id="d3"></div>    </div></div><script>var dom = document.getElementById(d3);alert(dom.offsetLeft);</script></body></html>

在ie7下居然是100px,我明明设置了定位啊,怎么解决呢?

技术分享

于是改一下样式,在#d3上也加上定位:

#d2{background:blue;position:relative;}#d3{background:yellow;position:relative;}

是不是好了,哈哈

技术分享

offsetLeft与offsetTop详解