1

我正在尝试创建一个导航,当用户位于链接的 href 页面内时,它会应用颜色。所以我搜索了一下,我认为最好的方法是使用:

$url = $_SERVER['REQUEST_URI'];

<a>在我应该创建一个 if 语句之后,如果 url 与我的导航的 href 相同,它应该在元素中插入一个类。此类将通过 CSS 应用颜色。

如果有帮助,这里有我的 html 导航:

    <div id="categories">
                    <ul>
                        <li id="nav-quien"><a href="biografia.php">quien es</a>
                            <ul>
                                <li id="nav-biografia" class="drop1"><a href="biografia.php">biografia</a></li>
                                <li id="nav-curriculum" class="drop2"><a href="curriculum_todos.php">curriculum</a></li>
                            </ul>
                        </li>
                        <li id="nav-galeria" class="marginli"><a href="gallery.php">galeria</a>
                            <ul>
                                <li id="nav-gal-nat" class="drop3"><a href="gallery_natural.php">paisaje natural</a></li>
                                <li id="nav-gal-urb" class="drop4"><a href="gallery_urbano.php">paisaje urbano</a></li>
                            </ul>
                        </li>
                        <li id="nav-prensa" class="marginli"><a href="prensa.php">prensa</a></li>
                        <li id="nav-links" class="marginli"><a href="links.php">links</a></li>
                        <li id="nav-contacto" class="marginli"><a href="contacto.php">contacto</a></li>
                    </ul>
                </div> 
</div>

我正在尝试了解如何使用 request_uri,因为我认为它非常有用。因此,任何帮助都非常受欢迎!

:)

4

3 回答 3

1

我通常会这样做:

<?php

function is_active($page) {
    return $_SERVER['REQUEST_URI'] == $page;
}
?>

<style>
.active_page {
    font-weight: bold;
}
</style>

<a class="<?php echo is_active('/biografia.php') ? 'active_page' : '' ?>" href="biografia.php">quien es</a>
于 2013-03-18T23:38:35.363 回答
1

根据PHP Manual, $_SERVER['REQUEST_URI'] 返回:

为访问此页面而提供的 URI;例如,'/index.html'。

因此,对于每个菜单项,您需要检查 $_SERVER['REQUEST_URI'] 是否与您的 href 字符串匹配。

<li id="nav-quien"><a href="biografia.php"
<?php
    if($_SERVER['REQUEST_URI'] == "/biografia.php")
    {
        echo ' class="active" ';
    }
?>
>quien es</a>
于 2013-03-18T23:42:52.440 回答
1
<?php
    function theUrl($link) {
        $uri = $_SERVER['REQUEST_URI'];
        if($link==$uri) {
            return 'class="active"';
        }
    }
?>

HTML

    <ul>
        <li><a href="" <?php echo theUrl('/index.php')?>>Home</a></li>
        <li><a href="" <?php echo theUrl('/about.php')?>>About</a></li>
        <li><a href="" <?php echo theUrl('/work.php')?>>Work</a></li>
        <li><a href="" <?php echo theUrl('/contact.php')?>>Contact</a></li>
    </ul>

这是我在我的网站上使用的脚本的修改版本。唯一的区别(与我的网站的代码),我的目标是第一个子目录,而不是uri,它允许我在其中拥有无限的页面/内容,并保持正确的主导航链接突出显示。(即www.mysite.com/work/

<a href="/work" <?php echo theUrl('work')?>>Work</a>
(you can't use URI for this technique)
于 2013-03-19T00:03:34.090 回答