如何使用 php + css 更改活动菜单的样式


How to change the style of an active menu with php + css

所以,我正在编写一个菜单,我希望它根据该页面上的状态保持一定的颜色。我已经在页面上添加了"class = 'active'",并尝试将其添加到CSS,但它不起作用。有什么想法吗?

PHP代码:

<?php
$currentPage = basename($_SERVER['REQUEST_URI']);
print "<div id = 'submenu-container'>";
print "<div id = 'submenu'>";
print "<ul class = 'about'>";
print "     <li><a  href='about.php#about_intro.php'if($currentPage=='about.php#about_intro.php' || $currentPage=='about.php') echo 'class='active''>About</a></li>";
print "     <li><a href='about.php#about_team.php'if($currentPage=='about.php#about_team.php') echo 'class='active''>Team</a></li>";
print "     <li><a href='about.php#about_services.php' if($currentPage=='about.php#about_services.php') echo 'class='active'>Services</a></li>";            
print " </ul>";
print "</div>";
print"</div>";
?>

.CSS:

#submenu ul li a .active {
background:#FFF;    
}

$_SERVER['REQUEST_URI']永远不会包含哈希后面的部分。它最多只会显示about.php和随?传递的任何 URL 参数。您应该为每个页面创建特定的页面,在查询字符串而不是哈希中给出about_intro/about_team/about_services,或者使用 javascript 添加活动类。

此外,不要在另一个语句中使用 if 语句。使用三元运算符。

print "<li><a href='about.php'"
    .$currentpage=="about.php"?" class='active'":""
    .">About</a></li>";
print "     <li><a  href='about.php#about_intro.php'if($currentPage=='about.php#about_intro.php' || $currentPage=='about.php') echo 'class='active''>About</a></li>";

没有意义。所有这些字符串都将输出并以 HTML 格式显示。必须使用字符串串联:

$cl = ($currentPage=='about.php#about_intro.php' || $currentPage=='about.php')?" class='active'": "";
print "<li><a  href='about.php#about_intro.php' $cl>About</a></li>";