javascript - 避免 Dijit 菜单与其目标 div 之间重叠

标签 javascript menu dojo popup dijit.form

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

enter image description here

那么有没有办法让Menu出现时不与div内容重叠,这样浏览菜单项的时候就能看到div内容,也许可以将menu定位在div的下方或上方,如下图。

enter image description here

最佳答案

这可以通过附加到 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"
    });
});

这是一个jsfiddle with the popup menu positioned as in your image

关于javascript - 避免 Dijit 菜单与其目标 div 之间重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173054/

相关文章:

menu - Yii2 禁用突出显示菜单项

javascript - 为什么我的 Dojo ContentPane 在加载内容后没有兑现其 promise ?

php - 为什么这个 Dojo 代码不与其 PHP 文件通信?

javascript - Dojo ValidationTextArea 小部件在无效时如何突出显示?

javascript - 拆分数组仍然是一个项目的数组而不是一个字符串

javascript - 当我按下键盘上的特定字母时,我想更改 div 大小

html - 带有子菜单但父链接未保持事件状态的垂直菜单

menu - JavaFX 菜单栏中的右对齐菜单

javascript - 将 blob URL 转换为普通 URL

javascript - meteor js未渲染的钩子(Hook)?