感谢您的观看。
我的网站使用PHP为每个页面包含相同的页眉和页脚。
我想要一张仅专门用于某个页面的样式表,所以请使用相应的标签来设置样式。
...<body><style type="text/css"> /* what ever */ </style></body>...
样式表在我测试的所有浏览器中都得到了正确处理,但W3C没有正确验证它,因为它位于body标签内而不是头部。
我的问题是:
如果我不能将样式表放在body标签中,那么包含它的最佳方法是什么?我可以在PHP标头中引用样式表,但我不想为这么小的文件提供另一个HTTP请求。你会怎么做?什么是最不马虎的方式呢?虽然样式标记不应位于&lt; body&gt;中,但浏览器仍会正确处理它。
答案 0 :(得分:8)
给身体一个id,然后只包含一般CSS中的页面特定文件,但样式前缀为id选择器?像这样:
在页面上
<body id="pageSpecificId">......</body>
在CSS文件中:
#pageSpecificId p {
... paragraph specific styles ...
}
#pageSpecificId li {
... list item specific styles ...
}
答案 1 :(得分:1)
最好的方法是使用缓冲视图文件的MVC框架,并允许在输出之前将标记动态添加到头部。
这是一种超简单的方法:
的index.php:
<?php
class Page {
private static $head = array();
private static $content = '';
static function add_head($tag) {
self::$head[] = $tag;
}
static function render_head() {
foreach (self::$head as $tag) echo $tag;
}
static function render_content() {
echo self::$content;
}
static function read_content($file) {
ob_start();
require $file;
self::$content = ob_get_clean();
}
static function render_layout($file) {
require $file;
}
}
Page::read_content('view.php');
Page::render_layout('layout.php');
?>
layout.php中:
<html>
<head><?php Page::render_head(); ?></head>
<body>
<div id="header"></div>
<div id="content"><?php Page::render_content(); ?></div>
<div id="footer"></div>
</body>
</html>
view.php:
<?php Page::add_head('<title>Hello World!</title>'); ?>
<h1>Hello</h1>
<p>World</p>