2013-08-31 108 views
3

好的,我在做這個網站。它主要由PHP提供支持。我有一個header.php和footer.php文件將被包括在內,以獲得更清潔的工作區域。問題是,我的主頁(主頁)使用main.css文件。新聞頁面具有許多相似的功能,因此它也使用main.css文件,但某些特定設置被news.css文件覆蓋。當它是全部HTML時,我很容易使它工作(只需先調用main.css,然後調用news.css)。但是現在由於樣式表調用是在一個通用的頭文件中,所以我在我的主頁上收到了一些意想不到的和不需要的CSS效果。爲特定頁面加載特定的css文件?

在PHP中,有沒有什麼辦法可以告訴我的瀏覽器只有在加載news.php時才加載news.css文件?

謝謝!

+2

理想情況下,您需要更正CSS在整個站點上的準確性。額外的HTTP請求和額外樣式表的加載時間可能並不理想。 – Scott

回答

2

header.php,作出if聲明,如:

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

當包括header.php,設置一個變量,將滿足if聲明。

$current_page = "join"; 
include '../header.php'; 
0

你可以這樣做:

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

或somethign這樣的,如果你不希望指定的URL,只想指定路徑(更好):

if ($_SERVER['SCRIPT_NAME'] == '/path/to/news.php') 
    echo '<link rel="stylesheet" href="path-to-stylesheet">'; 
1

你可以做一些沿着這些路線:

<?php 
if (stristr($_SERVER['SCRIPT_NAME'], 'news.php')) { 
    print('<link rel="stylesheet" type="text/css" href="/news.css">'); 
} 
?> 
0

我不是爲每個部分使用分離的CSS文件的忠實粉絲。我傾向於儘可能降低HTTP請求的數量。另外,擁有一個單獨的css文件,使我的觀點更容易維護。

對於未來的項目,您還可以嘗試爲每個網站部分聲明特定的主體類或ID。

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

這樣,您可以使用相同的CSS文件,在需要時覆蓋CSS的特定部分。

例如,如果你需要不同風格的新聞欄目股利的#header,在你的CSS,你可以這樣做:

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

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

如果身體標籤在header.php中聲明包括,你可以使用任何的建議的方法動態地添加所述主體的類:

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/

相關問題