javascript - 当我们从一个页面移动到另一个页面时,如何在 css 中更改相应的导航链接
问题描述
一种方法是向我们所在页面的导航链接添加一个活动属性:
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link navLink active" href="userhome.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link navLink" href="pool.php">Pool</a>
</li>
<li class="nav-item">
<a class="nav-link navLink" href="tickets.php">Tickets</a>
</li>
<li class="nav-item">
<a class="nav-link navLink" href="#">Winners</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link navLink " href="userhome.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link navLink active" href="pool.php">Pool</a>
</li>
<li class="nav-item">
<a class="nav-link navLink" href="tickets.php">Tickets</a>
</li>
<li class="nav-item">
<a class="nav-link navLink" href="#">Winners</a>
</li>
</ul>
... 等等
javascript 或 CSS 中还有其他替代方案吗?
解决方案
这是一个使用 PHP 的示例,通过在每个页面上设置一个变量来检查您所在的页面。由于看起来您的页面很少,因此这应该适合您。如有必要,我们也可以使用 URL:
在每个页面的顶部,在其他任何内容之前添加一个变量(您的 php 文件的第一行),切换页面的名称。我将使用该pool
页面作为示例:
<?php $current_page = 'pool' ?>
现在在你的nav.php
:
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link navLink <?php if ($current_page === 'home') echo 'active'; ?>" href="userhome.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php if ($current_page === 'pool') echo 'active'; ?>" href="pool.php">Pool</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php if ($current_page === 'tickets') echo 'active'; ?>" href="tickets.php">Tickets</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php if ($current_page === 'winners') echo 'active'; ?>" href="#">Winners</a>
</li>
</ul>
它的作用是检查$current_page
变量,如果它匹配,它将活动类添加到您的nav-link
元素。
这是一种无需在每个页面上设置变量即可完成的方法。这会将服务器返回的页面与当前文件名进行比较。
<?php
// Get the current page returned by the server.
$current_page_uri = str_replace( '/', '', $_SERVER['REQUEST_URI'] );
// Get the current file name
$current_file = basename( $_SERVER['PHP_SELF'] );
// Active class if current page uri and current file are the same
$active = ( $current_page_uri === $current_file ) ? 'active' : '';
?>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link navLink <?php echo $active ?>" href="userhome.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php echo $active ?>" href="pool.php">Pool</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php echo $active ?>" href="tickets.php">Tickets</a>
</li>
<li class="nav-item">
<a class="nav-link navLink <?php echo $active ?>" href="#">Winners</a>
</li>
</ul>
推荐阅读
- java - 同一字段的 @JsonUnwrapped 和 @JsonCreate 会导致问题
- git - 克隆时Git将中文文本添加到xml文件
- javascript - Splash 阻止 JS 执行
- php - 使用 PHP 或 MySQL 在数据库中获得最快的 0-60
- sql - T-SQL:从基于字符串的 SELECT 语句中排除列
- angular - Angular - 去抖动清晰度 vm-ware datagrid clrDgRefresh
- javascript - Сurve 线作为没有地图的两点之间的方向
- javascript - 如何从网页将javascript值加载到python中?
- c - 我们是否必须在 switch 语句之后添加一些东西
- python - 我将 python 3.6.4 更新到 3.7.2_2 并且我所有导入的模块都停止工作