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