列表 HTML / CSS / JavaScript / jQuery 中的上下文菜单

Context menu in list HTML / CSS / JavaScript / jQuery

在列表模式下实现 Web 菜单的最佳方式是什么?

我有:

我需要:

参考图片:

要求:

  1. 菜单必须在列表视图模式下工作。我尝试了一些不允许 select 菜单项之一的弹出窗口的实现,因为当鼠标在屏幕上向下移动时,它激活了另一个弹出窗口;

  2. 菜单必须允许内部按钮以及输入文本区域。

  3. 菜单必须位于屏幕右侧或用户用鼠标右键单击的位置。这很重要,因为单击列表具有特定功能(除了显示菜单)。因此,我必须允许执行操作或显示菜单。我的想法是左键单击/右键单击或项目的左侧减去 20 像素和右侧减去 20 像素。

理想情况下,它也是:

  1. 在将鼠标悬停在项目的右端时访问,并允许用户向下移动鼠标并访问每个菜单,直到找到正确的菜单。就像当有一个带有子菜单的侧边菜单时(只是相同的感觉,因为它应用的上下文不同);

  2. 没有弹出窗口的工具提示/箭头会更好。如果不可能,至少可以将其与悬停对象的方向正确排列。我了解到,在向右或向左过多的对象中,工具提示/箭头不会自行调整,但仍以菜单宽度为中心。

  3. 依赖越少越好。我更喜欢 HTML、HTML 或 CSS、HTML、CSS 和 Javascript,或者,如果不可能,只是 HTML、CSS、Javascript、jQuery 和 jQuery 插件。但是,和往常一样,越简单越好。

我的列表基于另一个 div(window 的右侧)中的很多 div(对于每个项目)。还有一个像取景器 window 一样的左侧菜单,该菜单基于 div 并向左浮动。 (只是这么说是因为信息越多越好)。

我还没有菜单的工作代码。实际上,我不确定如何开始。我尝试了一些 Whosebug 的答案,但 none 似乎符合我的目的。我不确定我是否应该 dive in bootstrap、x-editable 或其他任何内容。

我在这里制作了一个 Mac OS X 喜欢的内容菜单:

Fiddle

没有 JavaScript 就无法真正制作上下文菜单。如果您在 JavaScript 中向下滚动,则会有一个名为 funcs 的对象。每一项都是 HTML 像:

<item action="">HTML Code for Menu Item</item>

还有一个 state 标签,您可以将其应用到灰色:

<item state="gray">Grayed out item</item>

属性 action 将让项目 运行 JavaScript 当你点击它时:

<item action="run">Run Code!</item>

然后你在funcs中创建一个函数run:

var funcs = {
    "run": function () {
        alert('Code!');
    }
};

现在当您单击该项目时。它会提醒 Code!。在每个项目中,您可以输入任何 HTML,并且可以 运行 任何代码。


这将允许您右键单击任意位置以获取上下文菜单。它将允许你放置任何你想要的代码,只使用 jQuery 而无需插件,并且通常非常简单。我在 OS X Yosemite 的 popover 之后建模,我什至直接对颜色进行了采样。


JavaScript port with Element Detection support


With special noclick option and input

这个版本你可以添加 exit='noclick' 而那个特定的项目不会让事情消失。