我可以将其放入我的HTML <head>
吗?
<link rel="stylesheet" href="http://site.com/some/php/script/userid/style.php" />
基本上,我是否可以通过URI段(或GET变量)将用户ID传递给PHP脚本 - 这仍然会被有效地视为样式表?
因此,例如,如果在我的webapp中用户的页面有一个自定义CSS样式表,我可以通过输出这个样式表URL在我的控制器中动态加载它 - 这可能吗?我知道PHP部分肯定是可能的,但这仍然有效或完全兼容浏览器/服务器吗?
谢谢!
答案 0 :(得分:6)
我假设你问“这会起作用吗?”而不是“这是有效的HTML?”为此,请参阅@ Gordon的回答。
如果您的PHP脚本输出text/css
内容类型和有效的CSS,这将正常工作。
header("Content-type: text/css");
此标头是FF解释CSS所必需的。请参阅here why。
还需要添加一些缓存标头,否则可能会在每次加载页面时请求资源。
<强>然而... 强>
如果您需要输出动态CSS,请考虑使用静态样式表(即使用PHP解释不的样式表)和所有常规内容,并在文档头部添加动态数据:
<link rel="stylesheet" href="http://site.com/resources/style.css" />
<style type="text/css">
.userText { color: <?php echo $userTextColor; `> }
etc. etc.
</style>
这样,CSS资源可以保持静态文件。它不需要启动PHP进程来获得服务。如果您的CSS参数在页面之间发生变化,这将为您节省HTTP请求。
答案 1 :(得分:3)
是的,这是有效的HTML。对于HTML文档的有效性,唯一重要的是href attribute points to a URI.
<!ELEMENT link EMPTY>
<!ATTLIST link
%attrs;
charset %Charset; #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
type %ContentType; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
media %MediaDesc; #IMPLIED
>
您可以使用http://validator.w3.org/check
检查文档的有效性位于该URI的脚本必须使用正确的标头提供任何内容,以便浏览器实际上可以将其解释为CSS。这与HTML有效性完全不同。因此,要提供CSS文件,您必须设置text / css标题。
请注意,尽管unless you implement some sort of caching mechanism通常不鼓励使用此方法。当您指向PHP文件时,Web服务器将执行PHP文件,因此您将丢失通常用于静态资源的任何缓存机制。
答案 2 :(得分:1)
只要您输出正确的CSS就可以了。您的浏览器不关心样式表的生成方式或URI的外观。它只需要是一个样式表。
答案 3 :(得分:0)
只要你设置了正确的标题,就不应该有任何问题。