PHP包含的内容不适用于本地页面css

时间:2012-11-27 01:09:50

标签: php html css include

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

<?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的那个)不适用。包含工作正常。

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

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

3 个答案:

答案 0 :(得分: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应用于与当前查看页面对应的链接。如果您愿意,这也可以很容易地分离您的页面/链接配置。

答案 1 :(得分:1)

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

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

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

1个id + 1个元素&gt; 1 id

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

答案 2 :(得分:0)

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

<?php
  echo "<link rel='stylesheet' href='css-filename.css' type='text/css'>";
 ?>