2012-05-03 185 views
0

因此,我正在编写一个菜单,并希望它基于该页面保持某种颜色。 我在页面上添加了“class ='active'”,我尝试将它添加到CSS,但它不起作用。有任何想法吗?如何使用php + 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;  
} 

回答

1

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

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

print "<li><a href='about.php'" 
    .$currentpage=="about.php"?" class='active'":"" 
    .">About</a></li>"; 
+0

我将如何添加与JavaScript的活动类?对不起,我对JS没有那种经验,我一直选择它,从未正式自学过。 – Andrew

1
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>";