4

好的,我正在做这个网站。它主要由 PHP 提供支持。我将包含一个 header.php 和 footer.php 文件,以获得更清洁的工作区域。问题是,我的主页(主页)使用 main.css 文件。新闻页面有许多类似的功能,所以它也使用 main.css 文件,但一些特定的设置被 news.css 文件覆盖。当它全部是 HTML 时,我很容易让它工作(只需先调用 main.css,然后调用 news.css)。但是现在由于样式表调用在一个通用的头文件中,我的主页上出现了一些意想不到的和不需要的 CSS 效果。

有没有什么方法,某种 if 语句,在 PHP 中我可以用来告诉我的浏览器仅在加载 news.php 时才加载 news.css 文件?

谢谢!!!

4

4 回答 4

3

header.php中,做出如下if声明:

if ($current_page == "join") {
  echo "stylesheet..";
} else {
  echo "another stylesheet..";
}

包含时header.php,设置一个满足该if语句的变量。

$current_page = "join";
include '../header.php';
于 2013-08-31T21:21:30.277 回答
2

您可以按照以下方式做一些事情:

<?php 
if (stristr($_SERVER['SCRIPT_NAME'], 'news.php')) {
   print('<link rel="stylesheet" type="text/css" href="/news.css">'); 
} 
?>
于 2013-08-31T21:25:33.100 回答
0

您可以执行以下操作:

if ($_SERVER['PHP_SELF'] == 'http://url-to-news-page')
    echo '<link rel="stylesheet" href="path-to-stylesheet">';

如果您不想指定 url,而只想指定路径(更好),或者类似这样的东西:

if ($_SERVER['SCRIPT_NAME'] == '/path/to/news.php')
    echo '<link rel="stylesheet" href="path-to-stylesheet">';
于 2013-08-31T21:24:38.993 回答
0

我不喜欢为每个部分使用单独的 CSS 文件。我更喜欢将 http 请求保持在尽可能低的水平。此外,在我看来,拥有一个 css 文件会使以后的维护更容易。

对于未来的项目,您还可以尝试为每个站点部分声明特定的主体类或 ID。

<body class="news">
<div id="header"....

这样,您可以使用相同的 CSS 文件,在需要时覆盖 CSS 的特定部分。

例如,如果您需要为新闻部分设置不同的 div #header 样式,则可以在 CSS 中执行以下操作:

#header {
height: 120px;
background-color: #CCC;
}

.news #header {
height: 40px;
background-color: #000;
}

如果在 header.php 包含中声明了 body 标签,您可以使用任何建议的方法来动态添加 body 类:

if ($_SERVER['PHP_SELF'] == 'http://url-to-news-page') {
$body_class="news";
}

接着:

<body class="<?php echo $body_class;?>">

欲了解更多信息: http ://css-tricks.com/id-your-body-for-greater-css-control-and-specificity/

于 2013-09-02T03:17:17.030 回答