Javascript 了解偏移方法';s返回值
我在HTML文档中有一个带有Javascript 了解偏移方法';s返回值,javascript,jquery,html,css,offset,Javascript,Jquery,Html,Css,Offset,我在HTML文档中有一个带有id=“stimulus”的元素 当我在浏览器中打开此文档并使用浏览器控制台调查#stimulus的属性时,我看到的是: > $('#stimulus').offset() < Object {top: 0, left: 0} > $('#stimulus').css('top') < "-155.761px" > $('#stimulus').css('left') < "253.087px" $(“#刺激”).offset()
id=“stimulus”
的元素
当我在浏览器中打开此文档并使用浏览器控制台调查#stimulus
的属性时,我看到的是:
> $('#stimulus').offset()
< Object {top: 0, left: 0}
> $('#stimulus').css('top')
< "-155.761px"
> $('#stimulus').css('left')
< "253.087px"
$(“#刺激”).offset()
我该怎么解释呢?top
中的offset
与使用css
方法访问的top
有何不同?从,偏移是从文档顶部开始的;而顶部和左侧css属性是相对于父级的。也许您希望查看)以获取相对于.jQuery的.offset()
方法“返回元素相对于文档的坐标”,而.css()
方法返回通过css样式应用的任何值
偏移量是整个页面中的位置 css top将相对于元素最近的祖先定位元素。 该祖先可能位于页面中的任何位置,因此偏移量和顶部不匹配,除非没有从以下位置定位祖先:
.offset()
方法允许我们检索元素相对于文档的当前位置。与此相对应的是.position()
,它检索相对于偏移父对象的当前位置
该方法抽象本机元素,它返回相对于父元素的位置,,但前提是它在CSS中明确指定。因此,如果需要,请使用而不是.offset()
演示
$(函数(){
var child=$('.child');
log('offset:',child.offset());
console.log('position:',child.position());
console.log('css:'{
top:child.css('top'),
左:child.css('left')
});
});代码>
html,
身体{
保证金:0;
填充:0;
}
.家长{
位置:绝对位置;
顶部:5px;
左:5px;
}
.孩子{
位置:绝对位置;
顶部:10px;
左:10px;
}
你好,世界
您可能得到了不同的结果,因为id=“stimulus”
正在设置动画,并且您在不同的帧中发送了console.log
。或者该元素实际上是“静态”的,并且具有一些其他属性,这些属性会更改其offset()
位置
像
console.log(“Offset:,$('.test').Offset());//返回{top:0,left:0}
console.log(“上/左:”、$('.test').css('Top')、$('.test').css('Left'));//返回-200px,-20px
.test{
位置:绝对位置;
顶部:-200px;
左:-20px;
变换:translateY(200px)translateX(20px);
}
在我的示例中,这是否意味着整个文档的(0,0)位置应该出现#stimulus
?那不是页面的左上角吗?(那不是#stimulus
出现的地方。)@dbliss元素是隐藏的,用填充、边框还是边距进行偏移?文件中说,它没有为特殊情况提供正确的位置cases@dbliss为什么不提供复制您的问题的最低限度的示例?这应该是显而易见的,当我访问的价值观,刺激是隐藏的,是的。这就解释了。谢谢我现在在文档中看到了这一点<代码>位置
具有相同的限制css('top')
似乎没有这么大的局限性。应该注意的是,jq 3.x中更明显的错误是: