【问题标题】:Make navigation menu buttons highlighted for the current page为当前页面突出显示导航菜单按钮
【发布时间】:2015-09-04 08:28:51
【问题描述】:

我创建了一个导航菜单,可以在同一页面上加载不同的“包含”。我希望菜单按钮在当前页面中保持突出显示。我在这里看到的所有答案只涉及为每个链接导航到不同的页面。是否可以在同一页面上进行?因为导航栏实际上并没有重新加载。

 <nav class="menu">
        <ul>
            <li class="menuitem"><a href="?link=1" name="fluidBalance" <?php echo ($_GET['link'] == 1) ? 'class="highlight"' : ''; ?>>Calculated Fluid Balance</a></li>
            <li class="menuitem"><a href="?link=2" name="actualFluidBalance" <?php echo ($_GET['link'] == 2) ? 'class="highlight"' : '';?>>Actual Fluid Balance</a></li>
            <li class="menuitem"><a href="?link=3" name="graphicalView" <?php echo ($_GET['link'] == 3) ? 'class="highlight"' : ''; ?>>Graphical View</a></li>
        </ul>
</nav>
  <div class="contentFluidBalance" id="mainSection">
<?php

 if(isset($_GET['link'])){
     $link=$_GET['link'];
     if ($link == '1'){
         include 'includes/fluidBalance1.php';
      }
     if ($link == '2'){
         include 'includes/fluidBalance2.php';
      }
    if ($link == '3'){
        include 'includes/fluidBalance5.php';
      }
    }

 ?>

【问题讨论】:

    标签: php menu navigation


    【解决方案1】:

    你可以试试这个:

    <nav class="menu">
                 <ul>
                     <li class="menuitem"><a href="?link=1" name="fluidBalance" <?php echo ($_GET['link'] == 1) ? 'class="highlight"' : ''; ?>>Calculated Fluid Balance</a></li>
                     <li class="menuitem"><a href="?link=2" name="actualFluidBalance"  <?php echo ($_GET['link'] == 2) ? 'class="highlight"' : '';?>>Actual Fluid Balance</a></li>
                     <li class="menuitem"><a href="?link=3" name="graphicalView"  <?php echo ($_GET['link'] == 3) ? 'class="highlight"' : ''; ?>>Graphical View</a></li>
                </ul>
    </nav>
    

    其中 class="highlight" 是突出显示菜单的类的名称。

    【讨论】:

    • 我已经添加了您推荐的 php(见上文)。没用。唯一的区别是现在即使菜单按钮类的悬停和活动选项也不起作用。
    • 请检查css。
    • 好吧。对于 css,我刚刚包含了悬停中的任何内容: .highlight { color:#ffffff;背景:#383838; }
    【解决方案2】:

    最后以下代码对我有用:

    <nav class="menu">
     <ul>
       <li<?php if (isset($_GET['link']) && $_GET['link'] == '1') echo 'class="current"'?>><a href="?link=1" <?php if (isset($_GET['link']) && $_GET['link'] == '1') echo ' class="current"'?>" name="fluidBalance">Calculated Fluid Balance</a></li>
       <li<?php if (isset($_GET['link']) && $_GET['link'] == '2') echo ' class="current"'?>><a href="?link=2" <?php if (isset($_GET['link']) && $_GET['link'] == '2') echo ' class="current"'?>" name="actualFluidBalance">Actual Fluid Balance</a></li>
       <li<?php if (isset($_GET['link']) && $_GET['link'] == '3') echo ' class="current"'?>><a href="?link=3" <?php if (isset($_GET['link']) && $_GET['link'] == '3') echo ' class="current"'?>" name="graphicalView">Graphical View</a></li>
    </ul>
    </nav>
    
    <div class="contentFluidBalance" id="mainSection">
      <?php
         if(isset($_GET['link'])) {
          $link=$_GET['link'];
    
           if ($link == '1'){
            include 'includes/fluidBalance1.php';
          }
          if ($link == '2'){
            include 'includes/fluidBalance2.php';
          }
          if ($link == '3'){
            include 'includes/fluidBalance5.php';
          }
        }
      ?>
    </div>
    

    【讨论】:

      【解决方案3】:

      首先,检查当前页面是否等于您的菜单项之一:

      <nav class="menu">
        <ul>
          <li class="menuitem <?php if (isset($_GET['link']) && $_GET['link'] == '1') : ?>current<?php endif; ?>"><a href="?link=1" name="fluidBalance">Calculated Fluid Balance</a></li>
          <li class="menuitem <?php if (isset($_GET['link']) && $_GET['link'] == '2') : ?>current<?php endif; ?>"><a href="?link=2" name="actualFluidBalance">Actual Fluid Balance</a></li>
          <li class="menuitem <?php if (isset($_GET['link']) && $_GET['link'] == '3') : ?>current<?php endif; ?>"><a href="?link=3" name="graphicalView">Graphical View</a></li>
        </ul>
      </nav>
      
      <div class="contentFluidBalance" id="mainSection">
        <?php
          if(isset($_GET['link'])) {
            $link=$_GET['link'];
      
            if ($link == '1'){
              include 'includes/fluidBalance1.php';
            }
            if ($link == '2'){
              include 'includes/fluidBalance2.php';
            }
            if ($link == '3'){
              include 'includes/fluidBalance3.php';
            }
          }
        ?>
      </div>
      

      然后,在你的 CSS 中,对当前类做任何你想做的事:

      .menuitem.current a {
          color:red;
      }
      

      【讨论】:

      • 抱歉,还是不行。现在,在选择菜单项之前,它会在初始页面上产生以下错误:注意:未定义索引:C:\wamp\www\OneDrive\Fluid Accounting ver 2\fluidBalance.php 中第 13 行调用堆栈#TimeMemoryFunctionLocation 10.0020245296 中的链接{ main}( )..\fluidBalance.php:0 ">
      • 编辑了CSS,点击时当前链接是红色的吗?我测试了它,它应该可以工作。
      • 没有。完全没有效果。
      • 在 PhpFiddle 上再次测试,点击链接是红色的。 phpfiddle.org/lite/code/y31j-a0zd
      猜你喜欢
      • 2011-06-05
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 2010-12-30
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多