在我的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的新手,所以我认为这里缺乏知识。
答案 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'>";
?>