主导航在页面加载时采用悬停样式

发布于 2024-12-17 00:12:14 字数 288 浏览 0 评论 0原文

我正在制作一个水平导航菜单。我对这个菜单还有一个问题。当用户导航到页面时,我希望主 li 保持悬停。现在,li 不再保持悬停状态,而是恢复为默认状态。我是否需要给身体上一堂课才能使其发挥作用,还是有其他方法?代码片段可以在这里找到: http://jsfiddle.net/SeasonEnds/LSmfN/

理想情况下, “阅读”选项卡应在加载页面时采用悬停样式,但当用户将鼠标悬停在其他主要导航链接上时消失。

I have a horizontal nav menu that I am working on. I have one issue left with this menu. When the user navigates to a page, I would like the main li to remain hovered. Right now, the li does not remain in a hovered state and simply reverts to default. Do I need to give the body a class to make this work or is there another way? The code snippet can be found here: http://jsfiddle.net/SeasonEnds/LSmfN/

Ideally, the Read tab should take on the hover styles upon on loading the page, but go away as the user hovers over the other main nav links.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

他是夢罘是命 2024-12-24 00:12:14

当用户将鼠标悬停在另一个顶级链接上时,活动元素上的突出显示不应该真正消失,因为这不利于可用性 - 如果用户不单击链接,那么他们就失去了他们在哪里的视觉线索在您的网站上。

我稍微修改了 css:

ul#topnav li.on a    {color:#828282; background: #f3f3f3; }
ul#topnav li a:hover {background: #f3f3f3; color:#828282;}
ul#topnav li a:visited {color:#828282; }

我还添加了一些 jQuery,以在将鼠标悬停在子项上时保持活动顶级链接的颜色:

$("li a").hover(function(){
    $(this).parent().prev().toggleClass("top-level-highlight");
});

更新了小提琴:
http://jsfiddle.net/LSmfN/14/

The highlight on the active element shouldn't really disappear when the user hovers on another top-level link as this is bad for usability - if the user doesn't click on a link then they've lost the visual clue as to where they are on your site.

I've amended the css slightly:

ul#topnav li.on a    {color:#828282; background: #f3f3f3; }
ul#topnav li a:hover {background: #f3f3f3; color:#828282;}
ul#topnav li a:visited {color:#828282; }

I've also added a bit of jQuery to keep the colour of the active top-level link as you hover over the children:

$("li a").hover(function(){
    $(this).parent().prev().toggleClass("top-level-highlight");
});

Updated fiddle:
http://jsfiddle.net/LSmfN/14/

撕心裂肺的伤痛 2024-12-24 00:12:14

如果服务器没有设置活动菜单元素,或者没有 JS 指示活动元素,菜单就无法知道它位于哪个页面。

您可以执行以下操作 - 在“此处”添加一个类来指示当前位置:

ul#topnav li:hover, ul#topnav li.here {background: #f3f3f3;

使用 js 检测当前页面:

//var here = document.location+"" //for production
var here = "/home.html" //for testing  
 if(here.indexOf("home.html")>-1) {

     $('ul#topnav li').eq(0).addClass('here')
     $('ul#topnav li').mouseout(function() {
          $('ul#topnav li').removeClass('here')
     })
 } //repeat for all pages

There's no way for the menu to know which page it's on without either the server setting the active menu element, or JS indicating the active element.

Here's what you can do - add a class "here" to indicate the current position:

ul#topnav li:hover, ul#topnav li.here {background: #f3f3f3;

Detect the current page using js:

//var here = document.location+"" //for production
var here = "/home.html" //for testing  
 if(here.indexOf("home.html")>-1) {

     $('ul#topnav li').eq(0).addClass('here')
     $('ul#topnav li').mouseout(function() {
          $('ul#topnav li').removeClass('here')
     })
 } //repeat for all pages
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文