PHP菜单导航

时间:2010-12-16 19:05:40

标签: php

如何使用此图像标签系统构建一个突出显示当前页面的PHP导航菜单?

<a href="index.php" title="Home">
    <img src="images/menu/SR_MenuHome.gif" 
        alt="Home" 
        width="52" 
        height="31" 
        onmouseover="this.src='images/menu/SR_MenuHome-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuHome.gif';"
        />
</a>
<a href="company.php" title="Company">
    <img src="images/menu/SR_MenuCompany.gif" 
        alt="Company" 
        width="76" 
        height="31" 
        onmouseover="this.src='images/menu/SR_MenuCompany-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuCompany.gif';" 
        />
</a>
<a href="investors.php" title="Investor Relations">
    <img src="images/menu/SR_MenuIR.gif" 
        alt="Investor Relations" 
        width="157" 
        height="31" 
        onmouseover="this.src='images/menu/SR_MenuIR-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuIR.gif';" 
        />
</a>

1 个答案:

答案 0 :(得分:2)

您可以使用get数组并设置一个确定突出显示的类的变量。

这可能是最原始的方法,但可以用于此目的。

$class = $_GET['selected_class'];

使您的URL可以使用GET数组超全局传递变量。

http://www.yourdomain.com/?selected_class=about

<a href="index.html" title="Home"  class="<?if(strcmp($class, 'about') ==0){echo 'selected';}?>"><img src="images/menu/SR_MenuHome.gif" alt="Home" width="52" height="31" onmouseover="this.src='images/menu/SR_MenuHome-ov.gif';" onmouseout="this.src='images/menu/SR_MenuHome.gif';"/></a>

对所有选项卡重复,更改strcmp函数中的名称以检查下一个相关类。这将使得所选类由URL确定。然后,您可以将突出显示的样式应用于.selected类。

您还可以使用javascript从get数组中获取此值并操作dom来设置类。这只是最基本的方法。

此外,如果你想要去所有CSS并且你的图像足够小,我会抛弃滚动事件并使用CSS中的按钮CSS背景图像来设置背景图像属性。 / p>

http://www.w3schools.com/CSS/css_pseudo_classes.asp

编辑:按要求编辑。这将为所选页面创建一个get变量。我要将这个变量添加到你的href attr中。所以点击加载变量的页面。

<? $class = $_GET['selected_tab']; ?>

<a href="index.php?selected_tab=home" title="Home">
    <img src="images/menu/SR_MenuHome.gif" 
        alt="Home" 
        width="52" 
        height="31" 
        class="<? if(strcmp($class,'home')==0){echo 'selected';} ?>"
        onmouseover="this.src='images/menu/SR_MenuHome-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuHome.gif';"
        />
</a>
<a href="company.php?selected_tab=company" title="Company">
    <img src="images/menu/SR_MenuCompany.gif" 
        alt="Company" 
        width="76" 
        height="31" 
        class="<? if(strcmp($class,'company')==0){echo 'selected';} ?>"
        onmouseover="this.src='images/menu/SR_MenuCompany-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuCompany.gif';" 
        />
</a>
<a href="investors.php?selected_tab=investors" title="Investor Relations">
    <img src="images/menu/SR_MenuIR.gif" 
        alt="Investor Relations" 
        width="157" 
        height="31" 
        class="<? if(strcmp($class,'investors')==0){echo 'selected';} ?>"
        onmouseover="this.src='images/menu/SR_MenuIR-ov.gif';" 
        onmouseout="this.src='images/menu/SR_MenuIR.gif';" 
        />
</a>

将.selected的样式添加到css文件中。如果你想让它们内联,可以在标题中加上一个样式标记并将它们放在那里。

   <style>
      .selected{border-bottom:2px #fff solid;}
</style>

在这个例子中,我只是在所选元素上放置一个border属性。你可以使用任何CSS样式。

编辑:

如果你想根据css而不是js改变图像的状态,你必须使用各种可用的伪选择器将动作转移到CSS。您可以通过使元素为块或内联块(取决于菜单的顺序,垂直或水平),然后根据状态设置background-image属性来完成此操作。这将消除对img标签的需要(这对于语义来说可能是一件好事。

所以如果你有一个像这样的链接菜单:

<a class="nav-item" href="one">Home</a><a class="nav-item" href="two">About</a>

您可以使用背景图像设置这些状态的样式

<style>
.nav-item
{display:inline-block; width:76px; height:31px; background-image:url('path/to/upstate_image.gif');}

.nav-item:hover
{background-image:url('path/to/hover_image.gif');}

.nav-item.selected
{background-image:url('path/to/selected_image.gif');}
</style>

请注意,在这种方法中,必须将所选元素添加到新的.nav-item类中,因此我之前提供的代码必须反映出来。

class="nav-item <? if(strcmp($class,'investors')==0){echo 'selected';} ?>"

这会将类添加到所有标记本身。使用此方法,标签会将您想要的图像作为背景图像加载,您甚至不需要担心img标签或任何js。

这是一个粗略的演示,使用更原始的CSS样式,如颜色和背景(我没有时间制作图像。)

http://www.idrivecreative.com/offsource/demo_for_detonate.php

http://www.idrivecreative.com/offsource/demo_for_detonate.php?selected_tab=company

您可以通过查看来源查看状态更改以及如何使用css完成这些更改。希望这会有所帮助。

http://www.w3schools.com/css/pr_background-image.asp

您是否需要语法方面的帮助。