Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 避免Dijit菜单与其目标div之间的重叠_Javascript_Menu_Dojo_Popup_Dijit.form - Fatal编程技术网

Javascript 避免Dijit菜单与其目标div之间的重叠

Javascript 避免Dijit菜单与其目标div之间的重叠,javascript,menu,dojo,popup,dijit.form,Javascript,Menu,Dojo,Popup,Dijit.form,我有一个Dijit.Menu和一个div的代码示例。 左键单击菜单,我的问题是菜单重叠(或覆盖、隐藏)目标div的内容,用户在与菜单中显示的备选方案进行比较时无法读取其内容,请参见下图 因此,有没有一种方法可以使菜单在不重叠div内容的情况下显示,以便在浏览菜单项时可以看到div内容,可以将菜单定位在div的下方或上方,如下图所示 您可以使用工具提示对话框,以下是基于您提供的对话框的一个示例。这可以通过在显示弹出菜单时触发的onOpen事件上附加一些javascript来实现 代码应获取单击元

我有一个Dijit.Menu和一个div的代码示例。 左键单击菜单,我的问题是菜单重叠(或覆盖、隐藏)目标div的内容,用户在与菜单中显示的备选方案进行比较时无法读取其内容,请参见下图

因此,有没有一种方法可以使菜单在不重叠div内容的情况下显示,以便在浏览菜单项时可以看到div内容,可以将菜单定位在div的下方或上方,如下图所示


您可以使用
工具提示对话框
,以下是基于您提供的对话框的一个示例。

这可以通过在显示弹出菜单时触发的
onOpen
事件上附加一些javascript来实现

代码应获取单击元素的位置和高度,并计算菜单应放置的位置:

  • x:是触发元件的x位置
  • y:y位置与触发元件的高度之和
使用这些坐标设置弹出式菜单保持架元素的左侧和顶部样式属性:

pMenu.connect(pMenu, 'onOpen', function () {
    var position = dojo.position(this.currentTarget, true);   
    domStyle.set(this.domNode.parentNode, {
       left: position.x + "px",
       top: (position.y + position.h) + "px"
    });
});

这里有一个

重叠是什么意思,菜单的本质是显示在任何东西的顶部?你能解释更多吗?我看不出你想要什么或者问题在哪里?我补充了更多细节,希望这能有所帮助,谢谢。