0

在我的 html 页面中,我使用 PHP 包含来插入我的站点范围的标题:

<?php include 'header.php'; ?>

这是 header.php 中的代码:

<div id="header">
    <div id="navigation">
            <ul>
                <li><a href="index.php" class="active">home</a></li>
                <li><a href="about_us.php" id="nav_about">about us</a></li>
                <li><a href="competition.php" id="nav_competition">competition</a></li>
                <li><a href="media.php" id="nav_media">media</a></li>
                <li><a href="sponsors.php" id="nav_sponsors">sponsors</a></li>
                <li><a href="contact_us.php" id="nav_contact">contact us</a></li>
            </ul>
        </div>  
</div>

这是 HTML 文档标题中的 CSS:

#nav_about { color:#4c005c; }

插入代码中的“活动”类是更改该链接的颜色以表示您所在的页面。这功能很好,因为“活动”是在链接到 html 文件的 CSS 文档中定义的。我想根据包含的页面修改特定链接的颜色。问题是,当我测试它时,该页面上的 CSS(定义 #nav_about 的那个)不适用。包含工作正常。

总之,我需要找到一种方法来修改通过 PHP 插入的站点范围的 HTML 片段,并在它插入的页面上包含 CSS。

我是 HTML 和 PHP 的新手,所以我认为这里缺乏一些知识。

4

3 回答 3

2

根据您在 PHP 中所在的当前页面更改 HTML 元素的类的简单方法可能如下所示:

<?php
$nav_links = array(
    '/index.php' => array('id' => 'nav_home', 'label' => 'Home'),
    '/about_us.php' => array('id' => 'nav_about', 'label' => 'About Us'),
    // and so on for each link
);
?>
<div id="header">
    <div id="navigation">
        <ul>
<?php
foreach ($nav_links as $href => $link_info) {
    if ($_SERVER['REQUEST_URI'] === $href) {
?>
            <li><a href="<?php echo $href; ?>" id="<?php echo $link_info['id']; ?>" class="active"><?php echo $link_info['label']; ?></a></li>
<?php
    } else {
?>
            <li><a href="<?php echo $href; ?>" id="<?php echo $link_info['id']; ?>"><?php echo $link_info['label']; ?></a></li>
<?php
    }
}
?>
        </ul>
    </div>  
</div>

在这里,您只需将 class=active应用于与当前查看的页面相对应的链接。如果您愿意,这也使得分离页面/链接配置变得非常容易。

于 2012-11-27T01:25:13.567 回答
1

听起来像是选择器特异性问题。导航链接的 CSS 是什么?

如果它类似于#navigation li {color: #abc},那将优先于#nav_about选择器。

选择器特异性按每个中的 id、类和元素的数量排列。

1 个标识 + 1 个元素 > 1 个标识

增加#nav_about选择器的特异性(例如将其更改为 #navigation #nav_about),您应该没问题。

于 2012-11-27T01:13:46.287 回答
0

尝试使用传统方式,在 PHP 标签内,

<?php
  echo "<link rel='stylesheet' href='css-filename.css' type='text/css'>";
 ?>
于 2012-11-27T01:21:14.580 回答