【问题标题】:Navbar highlight for current page当前页面的导航栏突出显示
【发布时间】:2021-12-08 05:29:26
【问题描述】:

我想知道如何添加在您当前所在页面的导航栏上添加突出显示框的功能。你知道这样人们就知道他们在哪个页面上。

非常喜欢这个网站,活动页面上有白框:https://woodycraft.net/home/

这是我的导航栏的 CSS:

/*TOP NAV BAR SECTION*/

*{margin: 0px;
  padding: 0px;}

#nav_bar {background-color: #a22b2f;
          box-shadow: 0px 2px 10px;
          height: 45px;
          text-align: center;}

#nav_bar > ul > li {display: inline-block;}

#nav_bar ul > li > a {color: white;
                      display: block;
                      text-decoration: none;
                      font-weight: bold;
                      padding-left: 10px;
                      padding-right: 10px;
                      line-height: 45px;}

#nav_bar ul li ul {display: none;
                   list-style: none;
                   position: absolute;
                   background: #e2e2e2;
                   box-shadow: 0px 2px 10px;
                   text-align: left;}

#nav_bar ul li a:hover {background: #8e262a;}


#nav_bar a:active {background: white;}

#nav_bar ul li:hover ul {display: block;}

#nav_bar ul li ul li a {color: #252525;
                        display: block;}

#nav_bar ul li ul li a:hover {background: #4485f5;
                              color: #fff;}

这是我的一个页面的 HTML:

<!--TOP NAV BAR SECTION-->

                <div id="nav_bar">
                                <ul>
                                  <li><a href="index.html">Home</a></li>
                                  <li><a href="status.html">Status</a></li>
                                  <li><a href="info.html">Info</a></li>

                                  <li><a href="#">Gamemodes</a>                                      
                                <ul>
                                  <li><a href="survival.html">Survival</a></li>
                                  <li><a href="pure-pvp.html">Pure-PVP</a></li>
                                  <li><a href="gamesworld.html">Gamesworld</a></li>
                               </ul>
                                  </li>                                    

                                  <li><a href="rules.html">Rules</a></li>
                                  <li><a href="vote.html">Vote</a></li>
                                  <li><a href="contact.html">Contact</a></li>
                               </ul>
                           </div>

【问题讨论】:

  • 在当前页面上为您的项目添加一个类(例如“已选择”)并设置特定项目的样式:)

标签: html css


【解决方案1】:

您可以使用 jquery 函数 window.location.href 将您当前所在的网站与 href 进行比较> 在列表元素中。例如,“index.html”:

<li><a href="index.html">Home</a></li>

下面的代码在列表元素中搜索活动页面的href。然后使用 addClass('active') 将类“active”添加到活动页面 以便您现在可以通过 CSS 调用它>。将此代码放在 html 文件的头部。

<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
    $(function(){
        $('a').each(function(){
            if ($(this).prop('href') == window.location.href) {
                $(this).addClass('active'); $(this).parents('li').addClass('active');
            }
        });
    });
</script>

您现在可以添加您的 css 条件,例如更改颜色:

#nav_bar .active {
    color:            #F8F8F8;
    background-color: #4f81bd;
}

【讨论】:

  • 太棒了!我正在寻找这个
【解决方案2】:

如果您网站的每个 HTML 页面中都有相同的导航栏,那么您可以这样做:
例如,在 index.html 中将 class='active-page' 添加到第一个菜单项:

<div id="nav_bar">
    <ul>
        <li><a href="index.html" class='active-page'>Home</a></li>
        <li><a href="status.html">Status</a></li>
        <li><a href="info.html">Info</a></li>

然后在 status.html 中再次添加 class='active-page' 但第二项:

<div id="nav_bar">
    <ul>
        <li><a href="index.html">Home</a></li>
        <li><a href="status.html" class='active-page'>Status</a></li>
        <li><a href="info.html">Info</a></li>

并为您的所有页面执行此操作。

最后在你的 CSS 中为 active-page 编写一个类,如下所示:

#nav_bar ul li a.active-page
{
  background-color:blue;
}

【讨论】:

  • 我得到了 CSS 位,但我对 html 上的类感到困惑。我是编码新手,你看
  • 如何创建导航栏?这取决于您的语言。它只是HTML吗? PHP,ASP?您甚至可以使用 javascript 或 jquery 突出显示当前页面
  • 哦,全是 HTML 你想看其中一页吗?
  • 在该站点上,菜单中的活动项目具有 navLink 类。你应该试着把这门课给你想要的一个项目。语言不重要,逻辑随你。
  • 我还是不明白我需要在我自己的代码上看一个例子,我是一个视觉学习者。我会将 html 代码添加到我的帖子中。
【解决方案3】:

我在某处找到了一个非常简单的代码。

<script>
    $(function () {
        $('nav li a').filter(function () {
            return this.href === location.href;
        }).addClass('active');
    });
</script>

【讨论】:

    【解决方案4】:
        $(function (){
            $('a').each(function(){
                if ($(this).prop('href') === window.location.href) {
                    $(this).css({"background": "linear-gradient(to left, #f58D28 0, #f58D28 66%, #ba5c00 100%)", "border-radius": "30px"});
        
                }
            })
        })
    

    【讨论】:

    • 我喜欢 thomas0721 的想法,我有一个类似的问题并使用 jquery css() 功能添加到它,如果您在您的网站上使用 PHP,即您只有一个“包含”的中殿,将这行代码添加到单独的js文件src中吧