Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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/2/jquery/78.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/8/lua/3.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
Javascript 图像上方的Div从图像上的正确位置移出_Javascript_Jquery_Css_Html - Fatal编程技术网

Javascript 图像上方的Div从图像上的正确位置移出

Javascript 图像上方的Div从图像上的正确位置移出,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我把一个div放在背景图像的顶部。div是可点击的,因此它会弹出一个对话框。背景图像具有要放置div圆的点 问题是: 当背景图像左对齐且div元素具有position:absolute(绝对)时,它可以正常工作;左:x;上图:y,但我的问题是,当我尝试将图像居中对齐时,div的绝对x和绝对y不在图像中必须存在的点中。 另外,当我更改窗口的大小时,div的位置会发生平方移动。我尝试了绝对定位和相对定位 我所拥有的: <style> .containerdiv { positio

我把一个div放在背景图像的顶部。div是可点击的,因此它会弹出一个对话框。背景图像具有要放置div圆的点

问题是: 当背景图像左对齐且div元素具有position:absolute(绝对)时,它可以正常工作;左:x;上图:y,但我的问题是,当我尝试将图像居中对齐时,div的绝对x和绝对y不在图像中必须存在的点中。 另外,当我更改窗口的大小时,div的位置会发生平方移动。我尝试了绝对定位和相对定位

我所拥有的:

<style>
    .containerdiv { position: relative; width:100%; } 
    .cornerimage { position: absolute; top: 100px; left: 130px; } 
    .circle {
        border-radius: 50%;
        display: inline-block;
        margin-right: 20px;
        background: none repeat scroll 0 0 #701470;
        height: 24px;
        width: 24px;
    }
</style>
我的部门在这里:

<div class="containerdiv" align="center">
    <!-- my background image -->
    <img border="0" src='http://www.infokerala.org/sites/default/files/images/barry_boehms_spiral_model.jpg' alt="">

    <!-- trying absolute positioning -->
    <div class="circle" id="bar" style="top: 142px; left:875px; position: absolute;"></div>

    <!-- trying relative positioning -->
    <div class="circle" id="foo" style="top: -68px; right: 332px; left:-332px; position: relative;"></div>
<div>
正如您在图像中看到的,当我调整窗口大小时,绝对定位的div开始从图像中移出。 相对定位的div在一段时间后消失。我不知道为什么? 我只希望div圆位于图像顶部的固定位置,而不考虑窗口大小、在页面中嵌入图像的位置或任何调整大小的活动

我想要的是:

div如何移出其初始位置:

最后,在我慢慢缩小窗口大小后,甚至相对定位的div也消失了:


我知道绝对定位是相对于窗口的绝对位置,但为什么我要使div粘在我想要的原始点上?

而不是使用div您考虑过使用图像地图吗?你可以让它看起来像你想要的,它的定位是基于图像的,所以它会保持在正确的位置。您也可以像潜水一样附加咔哒声

我知道图像映射被认为有点像Web1.0,但我看到它们在这种情况下非常有效地使用,通过添加JavaScript和JQuery生成非常动态的结果。这部JQuery文学作品非常出色:


浮动div的解决方案似乎总是有点像在圆孔中强行插入方形桩。

您是否考虑过使用图像贴图而不是使用div?你可以让它看起来像你想要的,它的定位是基于图像的,所以它会保持在正确的位置。您也可以像潜水一样附加咔哒声

我知道图像映射被认为有点像Web1.0,但我看到它们在这种情况下非常有效地使用,通过添加JavaScript和JQuery生成非常动态的结果。这部JQuery文学作品非常出色:


其中,浮动div的解决方案似乎总是有点像在圆孔中强制使用方钉。

因此,当您将其放置在绝对位置时,它将保持在那里,而当您的背景图像因窗口大小调整而移动时,它将离开其顶部。实际上,圆将保持在其x,y位置,这是背景在移动 你的解决办法是选择相对的。 我将您的代码放在JSFIDLE中,相关的代码运行良好


在这里工作很好,不知道你为什么说过一段时间后它就消失了?也许某些JS会将其删除?

因此,当您将其定位为绝对位置时,它将保持在那里,而当您的背景图像因窗口大小调整而移动时,它将离开其顶部。实际上,圆将保持在其x、y位置,而移动的正是背景 你的解决办法是选择相对的。 我将您的代码放在JSFIDLE中,相关的代码运行良好


在这里工作很好,不知道你为什么说过一段时间后它就消失了?也许某些JS会删除它?

因为您知道背景图像的大小,所以很容易计算百分位偏移量而不是绝对偏移量


假设您有一个500x500像素的图像作为背景,并且希望将圆定位在50x50位置。如果你把它放在左边:50px;top:50px即使父容器调整大小,图像仍将保持在该位置。然而,如果你把它放在左边:10%;顶部:其偏移量的10%将随定位父对象而缩放。

因为您知道背景图像的大小,所以很容易计算百分位偏移量而不是绝对偏移量


假设您有一个500x500像素的图像作为背景,并且希望将圆定位在50x50位置。如果你把它放在左边:50px;top:50px即使父容器调整大小,图像仍将保持在该位置。然而,如果你把它放在左边:10%;顶部:其偏移量的10%将随定位父对象而缩放。

您需要添加一个事件,在页面调整大小和加载时重新计算div的绝对位置:

    <script>
    function recalc(){
        var width, height;
       width = $('.containerDiv').width();
       height = $('.containerDiv').height();
       width = width / 2;
       height = height / 2;
       $("#bar").css({"position":"absolute","top": width + "px","left": height + "px",});
       $("#foo").css({"position":"absolute","top": width + "px","left": height + "px",});

    }

    $(window).load(function(){ recalc();});

    $(window).resize(function () { recalc();});

    </script>

您需要添加一个事件,在页面调整大小和加载时重新计算div的绝对位置:

    <script>
    function recalc(){
        var width, height;
       width = $('.containerDiv').width();
       height = $('.containerDiv').height();
       width = width / 2;
       height = height / 2;
       $("#bar").css({"position":"absolute","top": width + "px","left": height + "px",});
       $("#foo").css({"position":"absolute","top": width + "px","left": height + "px",});

    }

    $(window).load(function(){ recalc();});

    $(window).resize(function () { recalc();});

    </script>

+1这将很好地工作,只要你使用一个缩放良好的图像,并且位置不必精确到像素。这也适用于对div的小操作。基本上,我删除了container div中的图像标签并制作了
容器div本身的背景图像属性作为图像。现在容器div附带了它的图像。接下来,我将容器div的宽度和高度设置为完全等于嵌入图像的像素大小。然后在ContainerDiv中,我只是将圆形按钮放置为位置:相对、宽度和高度,以我希望它们位于的位置的百分比表示。谢谢各位。但我喜欢ImageMapster上@SvabV提出的解决方案。Cheers+1这将很好地工作,只要你使用一个缩放良好的图像,并且位置不必精确到像素。这也适用于对div的小操作。基本上,我删除了container div中的image标记,并将container div本身的background image属性作为image。现在容器div附带了它的图像。接下来,我将容器div的宽度和高度设置为完全等于嵌入图像的像素大小。然后在ContainerDiv中,我只是将圆形按钮放置为位置:相对、宽度和高度,以我希望它们位于的位置的百分比表示。谢谢各位。但我喜欢ImageMapster上@SvabV提出的解决方案。CheeserAbsolute不尊重窗口,它相对于最近的父对象工作,位置不是静态相对的,绝对的,固定的。absolute不尊重窗口,它相对于最近的父对象工作,位置不是静态相对的,绝对的,固定的。我在JSFIDLE中尝试过它。请将窗口调整为一个小矩形,我确信它会消失。您还可以在JSFIDLE中左右移动这些条来查看它的行为。请将窗口调整为一个小矩形,我确信它会消失。您还可以在JSFIDLE中将这些条向左或向右移动,以查看其行为。谢谢!真棒,谢谢!非常好的洞察力。谢谢Justin,但是仅仅为了调整大小而重新计算50+点的位置是一种过火的行为。谢谢Justin,但是仅仅为了调整大小而重新计算50+点的位置是一种过火的行为。