繁体   English   中英

为什么 position 方法没有返回预期值?

[英]Why does the position method not return the expected values?

在这种情况下,为什么position方法不返回[left: 100, top: 10]

<!DOCTYPE HTML>
<html>
<head>
<style>
#parent1 {
    width: 300px;
    height: 200px;
    border: solid 9px pink;
}

#child1 {
    position: relative;
    left: 100px;
    top: 10px;
    width: 100px;
    height: 100px;
    border: solid 5px green;
}
</style>
<script src="http://jquery-local/jquery.all.js"></script>
<script type="text/javascript">
(function ($) {
    $(document).ready(function () {
        console.log($('#child1').position());
    });
})(jQuery); 
</script>
</head>
<body>

<div id="parent1">
    <div id="child1"></div>
</div>

</body>
</html>

是通过css方法获得 position 的唯一方法吗?

您的 jquery 源位置错误。

尝试将 jquery src 更改为http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js

或到最新版本http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

为我工作 - 在这个 JSFiddle中,我得到

 left: 119
 top: 19

它占顶部的 10px 值加上周围元素的 9px 边框。

但是, position()可能不是您想要的 - 它检索 position相对于偏移父级。 在这种情况下,它没有区别,因为没有偏移父级,但是如果您想要文档中的 position,请改用.offset()

对我来说,它返回:[117, 27]。

首先,因为子节点的 position 是相对于父节点的,所以子节点的坐标仅与父节点的坐标相对。 这意味着父级的任何定位,例如默认的正文边距,都会添加到子级的定位中。 此外,还添加了父级的边框,另外 9 像素。 如果设置body的margin为0,则孩子的position为[109, 19]:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM