导航高亮是一种很常见的需求,包括:

  1. 当前页面的导航高亮;
  2. hover时高亮。

我们主要来讨论第一种,如果你用JS控制,那么在脚本加载好之前,当前页面不会高亮,而当脚本加载之后会突然高亮。这种情况下会出现闪烁,用JS吃力不讨好。当然你可以使用后端渲染如PHP、JSP、ASP等动态渲染。但如果仅仅是前端该如何实现呢?


原理和思路特别简单,分为3步:

1、给不同的页面body添加不同的类,用于标识不同的页面:

<!-- home.html -->
<body class="home"></body>

<!-- buy.html -->
<body class="buy"></body>

2、而 li 也用 class 标识,并和 body 的 class 关联起来:

<li class="home"></li>
<li class="buy"></li>

3、然后可以用当前页面的样式,覆盖掉默认的样式:

nav li {
    opacity: 0.5;
}

nav li:hover {
    opacity: 1;
}

/* Main */
body.home nav li.home,
body.buy nav li.buy {
    opacity: 1;
}

results matching ""

    No results matching ""