Css菜单,不要在悬停时隐藏当前菜单链接

前端之家收集整理的这篇文章主要介绍了Css菜单,不要在悬停时隐藏当前菜单链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这里我做了一个我的菜单jsfiddle的例子.所以我有水平菜单下拉,但我需要的是 – 在页面加载第一李应该扩展(这不难)当我悬停在任何其他元素上它应该显示当前扩展的内容(如果i mouseleave当前元素应该扩展).

这是当我将鼠标悬停在Item2和mouseleave Item2时,它应该保持这样:

Item1       Item2          Item3
            |||||
subItem2.1  subItem2.2 subItem2.3

更新:

我设法做到了,但有一个例外,这是JSFiddle链接

它按照我想要的方式工作,但是当我点击链接Item1或Item2时,调用init()函数,并且Item1再次激活,我需要以某种方式设置活动链接 – 单击一个,

例如,如果我点击了Item3链接,它会将我重定向到Item3页面,并且此链接菜单中处于活动状态.
(Jsfiddle上的所有代码)

最佳答案
如果我正确理解你的问题,问题是你需要调用init函数来重绘所有,但同时你将item1设置为current;如果您刚刚按下link2,这就不行了.

如果认为你的解决方案应该几乎删除所有的init代码.所有这些都可以在css样式中完成,简化了很多代码.

你将活动设置为项目. (你已经在锚中做了这个,在li中做).然后,将所有外观样式放在css中,并减少脚本.

不需要在子项目上设置活动.你可以设置像li.active li这样的规则;也就是说,li是活跃li的后代.

完成所有这些后,您可以完全避免使用init函数.

添加小提琴

我在更新的fiddle中更改了它

我正在将可见项目菜单标记为“当前”,我发现“主动”让类名混淆.它必须在li而不在,因此它可以影响第二级lis

现在剧本就是

$(document).ready(function() {
    $("#menu_item ul.menu li.expanded").mouSEOver(function(){
        var prevIoUs = $('.current');
        prevIoUs.removeClass('current');          
        $(this).addClass('current');
    });
});

我只是从前一个当前元素中删除当前元素,并将其添加到新元素中.

初始选择仅在标记

而新的css规则是:

#menu_item > ul.menu > li.current  {
    background-color: orange;
}
#menu_item ul.menu li ul {
    display: none;
}
#menu_item ul.menu li.current ul {
    display: block;
}

猜你在找的CSS相关文章