Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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_Html_Css - Fatal编程技术网

Javascript 相对于光标坐标的Div位置

Javascript 相对于光标坐标的Div位置,javascript,html,css,Javascript,Html,Css,我有一个带有自定义上下文菜单的图像库。在图像上单击鼠标右键时,菜单位置相对于光标坐标 如果坐标+div大小>窗口大小,div的位置将发生变化,div应位于img内 当我点击图像,坐标+div size小于window size时,没有问题。问题是,当我单击坐标+div size为>窗口大小的位置时,有时效果很好,有时div位置似乎不符合jvascript条件。我不明白 代码如下: gary.addEventListener('contextmenu', gallery); function g

我有一个带有自定义上下文菜单的图像库。在图像上单击鼠标右键时,菜单位置相对于光标坐标

如果坐标+div大小>窗口大小,div的位置将发生变化,div应位于img内

当我点击图像,坐标+div size小于window size时,没有问题。问题是,当我单击坐标+div size为>窗口大小的位置时,有时效果很好,有时div位置似乎不符合jvascript条件。我不明白

代码如下:

gary.addEventListener('contextmenu', gallery);
function gallery(e){
    e.preventDefault();
    var reh=e.clientY;
    var rey=e.clientX;
    var cnx=conxm.clientHeight;
    var cxm=conxm.clientWidth;
    var gig=window.innerHeight;
    var fgi=window.innerWidth;
    if((reh+cnx)>=gig && (rey+cxm)<=fgi){
        conxm.style.top=((gig-cnx)-10)+"px";
        conxm.style.left=rey+"px";
    }
    else if((reh+cnx)<=gig && (rey+cxm)>=fgi){
        conxm.style.top=reh+"px";
        conxm.style.left=((fgi-cxm)-10)+"px";
    }
    else if((reh+cnx)>=gig && (rey+cxm)>=fgi){
        conxm.style.top=((gig-cnx)-10)+"px";
        conxm.style.left=((fgi-cxm)-10)+"px";
    }
    else{
        conxm.style.top=reh+"px";
        conxm.style.left=rey+"px";
    }
    conxm.style.display="block";
}

<div id="curtain">
    <div id="txt">
    </div>
    <div id="rev">
        <img src="../img/revi.png" onClick="rvs()">
    </div>
        <img src="" name="gary">
    <div id="frw">
        <img src="../img/reviv.png" onClick="fwd()">
    </div>
</div>
gary.addEventListener('contextmenu',gallery);
功能画廊(e){
e、 预防默认值();
var-reh=e.clientY;
var-rey=e.clientX;
var cnx=conxm.clientHeight;
var cxm=conxm.clientWidth;
var gig=窗内高度;
var fgi=window.innerWidth;
如果((reh+cnx)>=gig&&(rey+cxm)=gig&&(rey+cxm)>=fgi){
conxm.style.top=((gigcnx)-10)+“px”;
conxm.style.left=((FGICXM)-10)+“px”;
}
否则{
conxm.style.top=reh+“px”;
conxm.style.left=rey+“px”;
}
conxm.style.display=“block”;
}

编辑:如果为div定义了宽度和高度,则该函数可以工作,但我需要可变宽度。

最后我只是移动了一下

conxm.style.display="block";
以前

e.preventDefault();
现在它工作得很好

你能创作一首曲子吗?这是小提琴: