如何在纯CSS中创建“粘性”下拉菜单?

时间:2010-09-28 22:37:52

标签: javascript html css drop-down-menu

我正在努力实现的效果:

在Twitter的新重新设计中,他们为帐户设置区域实施了“粘性”下拉菜单。

基本上,当您点击顶部黑色全局导航栏中的用户名时,菜单会切换为打开并保持打开状态,直到您再次单击其中一个链接或用户名称切换为关闭。

我想用CSS和HTML实现粘性菜单的完全相同的效果。我可以使用CSS3功能,但如果可以在不依赖CSS3的情况下实现这一点,那就更好了。

到目前为止我尝试了什么

我可以创建基本的导航菜单,下拉列表使用纯CSS和HTML,但只使用:hover pseudoclass。我尝试了:有效的伪类,但不幸的是它没有“坚持”并保持开放。

这种“粘性”下拉效果是否可以在不依赖javascript的情况下实现?如果不依赖于javascript是不可能的,我应该如何处理它以使它降级优雅?

3 个答案:

答案 0 :(得分:4)

我要离开这里,因为我无法从工作中访问Twitter。如果我没记错的话,在主页面上使用相同的脚本来登录。它会创建一个小弹出窗口,即使在移动鼠标后也会停留在那里。

如果这就是你所说的话,你就无法用CSS实现这一目标;它是一种样式语言,而不是脚本语言。一旦该事件停止,:hover/:active伪类样式将全部取消应用。

涉及Javascript的替代方案是使按钮成为引导您进入实际页面的链接。然后绑定它的onclick以弹出一个绝对隐藏的div return false默认隐藏(div在onclick中以防止跟踪链接)。这个{{1}}在你想隐藏它的任何条件下都不会被隐藏,并且它开始隐藏,所以如果他们没有Javascript,他们就不会知道他们错过了什么。

答案 1 :(得分:1)

使用pseudo班级:focus代替:active。您可能还需要在HTML中使用tabindex=""来使元素接受焦点。

但是,iOS触摸屏似乎无法识别tabindex=""

答案 2 :(得分:0)

可以在CSS的帮助下使用标签并结合输入[type =“checkbox”] :checked 伪选择器来实现商店状态

请参阅https://developer.mozilla.org/en/CSS/%3achecked

上的示例