【发布时间】:2014-12-25 12:49:17
【问题描述】:
假设我有一个具有以下结构的页面:
<div id="page">
<div class="someblock">
....
<div class="container">
<span>January</span>
<span>February</span>
<span>March</span>
...
</div>
....
</div>
</div>
css
#page {
position:relative;
width:1000px;
margin:0 auto;
}
.someblock {
margin-left:500px;
}
.container span {
display:inline-block;
}
现在我想获得<span> 之一的偏移量
var pos = $(".container span").first().offset().left;
假设pos 必须为0,但实际值约为1000。搜索问题后,我发现<span> 中的offsetParent 不是.container,而是#page。为什么?!!经过进一步搜索,我发现元素之间的唯一区别是position。 relative 对应 #page 和 static 对应 .contaier(浏览器的默认值)。临时解决办法是
div {
position:relative;
}
但我不想要这种改变。所以我的问题-尽管元素有position:static,但如何获得元素的偏移量?
【问题讨论】:
-
页面上还有
.container吗? -
不,只有一个
.container -
看那个jsfiddle.net/5yxwmL95,展开
result area再运行,可以看到值变了。 -
是的 @Waki 这不是一个很好的例子,因为所有的 div 都是从 0 开始的;我更新了示例,为父块添加了一些边距
-
看不出区别jsfiddle.net/5yxwmL95/1你试图获得第一个跨度的位置,对吧?
标签: jquery html css css-position