为什么我的所有导航栏链接上的“活动”类?

时间:2017-10-29 20:40:26

标签: php nav navigationbar

这是我的navbar.php文件

<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="">Pointless?</a>
    </div>
    <ul class="nav navbar-nav">
<?php
$active = "";
$pages = array("/index.php","/music/index.php","/pong/index.php");
if ($_SERVER["SCRIPT_NAME"] == $pages[0]) {
    $active .= "active";
}
else if ($_SERVER["SCRIPT_NAME"] == $pages[1]) {
    $active .= "active";
}
else {
    $active = "";
}
echo "      <li class=\"$active\"><a href=\"/\">Home</a></li>\n      <li class=\"$active\"><a href=\"/music\">Music</a></li>\n      <li class=\"$active\"><a href=\"/pong\">Pong</a></li>";
?>
    </ul>
  </div>
</nav>

有人知道为什么所有导航链接的属性都填入“活动”吗? 因为我在if语句中将该添加添加到变量中。

此外,有什么我应该改变代码/是不必要的吗?

1 个答案:

答案 0 :(得分:2)

在创建li之前,您要将$class的值设置为活动状态。这就是它发生的原因。

您可以像这样更新您的代码。

<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="">Pointless?</a>
    </div>
    <ul class="nav navbar-nav">
<?php $url = $_SERVER['REQUEST_URI']; ?>

<li class="<?php echo $url === '/test.php' ? 'active' : '' ?>"><a href="/">Home</a></li>
<li class="<?php echo $url === '/music/index.php' ? 'active' : '' ?>"><a href="music">Music</a></li>
<li class="<?php echo $url === '/pong/index.php' ? 'active' : '' ?>"><a href="pong">Pong</a></li>
    </ul>
  </div>
</nav>