因此,我决定开始更深入地学习CSS,并尝试实现一个纯CSS的下拉菜单/选择框。我首先研究了一些在线教程中提供的代码。
最终,我得出了这个解决方案,我认为它相当不错。然而,我已经得出结论,在某些情况下,CSS菜单可能永远无法取代JavaScript菜单,因为在放弃JavaScript时会出现一些微妙的问题。
如果您下拉菜单中的项目只是<a href
链接,那么一切都应该没问题。但是,如果您希望每个链接触发JavaScript事件,则会遇到以下问题:
当用户在下拉框中点击某个项目时,显然你希望下拉框消失。如果你的下拉框中的项目是
<a>
元素,则会自动发生这种情况。如果它们不是<a>
元素,则下拉框将不会在单击时消失——这将给你留下两个选择:(A)连接一些监听onclick
的 Javascript,然后使下拉框消失;或者(B)使用 CSS:active
选择器将下拉框的display
属性设置为none
。 (A)很愚蠢,因为你基本上回到了 Javascript 菜单,而(B)不起作用,因为它防止 Javascript 事件在单击菜单项时触发。所以,你必须使用
<a>
标签。这意味着,如果你想将事件与菜单项选择关联起来,你需要在你的<a>
标签中使用内联的onclick
。这很好,除非你这样做,它会防止下拉菜单消失(正如我 jsfiddle 链接中演示的那样)。因此,仅使用 CSS 的下拉菜单似乎只能在用户选择菜单项后想要通过<a>
链接导航到另一页时起作用。我找不到任何方法来触发 Javascript 函数而不带有一些陷阱。
.style.display='none';
)。 - uınbɐɥs