2013-04-29 154 views
0

我有一个文件,其中包含导航链接的数组,因此如果我想添加一个新的链接到导航菜单,我可以在一个文件中完成,而不必手动更改多个。但是,每个菜单链接(类别)都需要不同的a:悬停颜色,但我目前的编码不起作用。CSS/PHP更改悬停颜色链接

这里就是存储在菜单项的文件,用颜色应该是沿着:在多索引数组悬停颜色(有些为空白):

<?php 

$CATEGORIES = array(
    array("culture", "#f9993c"), 
    array("nature", "#59AF56"), 
    array("science", "COLOUR"), 
    array("society", "COLOUR"), 
    array("technology", "COLOUR") 
    ); 

?> 

这里的文件打印菜单项:

<?php 

$count_categories = count($CATEGORIES); 
$incr_categories = 0; 

while($incr_categories != $count_categories) { 
    // Change main_right_sub a:hover 
    echo "<style>#main_right_sub a:hover { color: ".$CATEGORIES[$incr_categories][1]."; } </style>"; 

    // Print Nav Items 
    echo "<a href='category.php?cat?=".$CATEGORIES[$incr_categories][0]."'>".strtoupper($CATEGORIES[$incr_categories][0])."</a>"; 

    // Increment Count 
    $incr_categories++; 
    if ($incr_categories != $count_categories) { 
     echo "&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;"; 
    } 
} 

?> 

我猜你不能互换那样的风格,因为所有的链接都出来为“#59AF56”鼠标悬停,这是奇怪的,因为这是第二颜色在多索引数组中。任何帮助,将不胜感激!

回答

0

所有的CSS首先每个元素作为后不加载你可能认为,浏览器将使用什么是对所有的元素,优先级最高的规则你可以做的是使用内联CSS样式的,但不幸的是:hover不是支持者所以你最后的手段基本上是JavaScript的

<a 
    href="link.php" 
    onMouseOver="this.style.color='#FFF'" 
    onMouseOut="this.style.color='#000'" 
>Text</a> 

但是最好的方法无疑是使用类,给每个类使用一个类,并根据需要将这些类添加到期望的元素。

+0

完美地工作,谢谢! – DorianHuxley 2013-04-29 17:25:08

1

您可以设置的类别为CSS类在你的链接,以便生成的链接看起来是这样的,例如:

<a href="category.php?cat=culture" class="culture">CULTURE</a> 

然后定义必要的颜色各环节类的CSS样式(通过在PHP代码或通过在静态CSS文件定义它们生成它们。例如,对于培养链路如在上面的例子:

#main_right_sub a.culture:hover 
{ 
    color: #f9993c; 
} 
+0

添加新菜单项时,这需要额外的修改。我试图这样做,只需要在一个文件中更改事件,剩下的事情就会自动完成,但无论如何感谢您 – DorianHuxley 2013-04-29 17:13:14

+0

最糟糕的情况,您可以放一个''在同一个文件中阻止你的HTML代码,并把你的CSS代码放在里面。 – pilsetnieks 2013-04-29 17:14:39