Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在相对元素上设置绝对位置?_Jquery_Html_Css_Offset - Fatal编程技术网

Jquery 如何在相对元素上设置绝对位置?

Jquery 如何在相对元素上设置绝对位置?,jquery,html,css,offset,Jquery,Html,Css,Offset,经过一些简化后,问题是当用户单击第一个图像时,我不知道如何设置另一个图像。这更容易在中看到 有什么问题吗?我认为问题在于“相对”div#problem元素。如果从CSS中删除“position:relative”,一切都正常,但我需要这里的relative 另外,我注意到,如果我将“pin容器”更改为替代容器(直接从HTML标记挂起),一切都可以正常工作,但我需要相对DIV中的“pin容器” 真正的问题是什么?我假设.offset()将为我提供与文档相关的位置,如中所述,.offset(坐标)也

经过一些简化后,问题是当用户单击第一个图像时,我不知道如何设置另一个图像。这更容易在中看到

有什么问题吗?我认为问题在于“相对”div#problem元素。如果从CSS中删除“position:relative”,一切都正常,但我需要这里的relative

另外,我注意到,如果我将“pin容器”更改为替代容器(直接从HTML标记挂起),一切都可以正常工作,但我需要相对DIV中的“pin容器”

真正的问题是什么?我假设
.offset()
将为我提供与文档相关的位置,如中所述,
.offset(坐标)
也会这样做

注意:想法是黑匣子应该出现在与大图像相同的坐标中,但它似乎放错了位置

注2:我不知道这是否是问题所在,但我正在使用带有Chrome和Firefox的Ubuntu Linux。两个浏览器都显示错误放置的黑框

注3:目标是获取大图像的坐标,并使用
绝对定位在同一位置上设置一个小框。没有什么技巧像将与大图像相同的
边距设置为黑框,对不起。

.offset()
查找元素相对于文档的位置。您似乎想使用
.position()
来查找
相对
容器中的位置

您还需要应用原始图像的边距,并使用
.css()

.offset()
返回元素相对于整个文档的位置。您需要的是获取相对于偏移父对象的位置(在本例中为
#internal
)。这就是
.position()
的作用

$("img").click(function () {
    var offset = $(this).position(); // not offset!
    var $pin = $('<img>')
            .addClass('pin')
            .attr('src', "http://208.86.154.173/shared/images/black_box.png")
            .css({top: offset.top, left: offset.left}); //.offset() works, but shouldn't
    $("#pins").append($pin);
});​
$(“img”)。单击(函数(){
var offset=$(this).position();//不偏移!
变量$pin=$('

在pin上添加5px的边距(与原始图像上的边距相同),pin正好出现在图像的左上角。

我对您希望发生的事情有点困惑。当我单击图像时,图像上方会出现一个黑色正方形。它应该出现在特定的点上吗?颜色也让我感到困惑。您正在获取父
img
偏移量,并将其应用到b缺少您正在添加的框。它正在按我的预期工作,但我怀疑这是您想要做的。您是否试图将鼠标单击的框放置在该框中?@ExplosionPills抱歉,黑色框的偏移量应与大图像的偏移量相同,但它似乎向下移动了一些像素right@MattBurland:否,该框应显示在t中他离开了大图的上角,但相反,至少在我尝试的浏览器中,它似乎放错了位置。我在Linux上工作:Chrome和Firefox给出了相同的结果。它给出了相同的结果,因为它在做它应该做的事情。也许你把
.offset
.position
混淆了?