动态CSS和Javascript
-
07-07-2019 - |
题
如何使用PHP创建动态CSS和JavaScript(使用PHP)。 这需要完成,因为不同的页面有时会有不同的元素集,所以每次包装和发送一个大的CSS / JS都会有点过分。 为什么许多网站都有这样的链接标签:
<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'>
CSS如何了解GET参数?
由于这可能涉及URL重写或使用标题功能,请提供简短的例子
解决方案
所以,你可以采取一些不同的方法。首先,如果您可以访问apache的虚拟主机文件,则可以将CSS设置为由php解释器读取。我从来没有这样做,并不会推荐它,但一个例子是:
<VirtualHost *:80>
AddType application/x-httpd-php .css
</VirtualHost>
这也可以在您的.htaccess文件中完成。
或者,你可以建立一个像
这样的链接<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'>
并放
<?php header("Content-type: text/css"); ?>
作为第一行。
我从未考虑过Vinicius的技术,但我不怀疑它也有自己的优点和缺点。
PS - 有时GET变量用于缓存目的(或实际上是通过将当前unix时间戳附加到css链接来防止缓存,如
<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" />
其他提示
对.css或.js文件的请求可以使用例如.htaccess(在Apache中)重定向到PHP脚本,因此即使src属性是“style.css”,它实际上也是响应用户的PHP脚本。
您的CSS和Javascript文件已缓存,我不建议提供不同的样式表/ js文件,除非它们的大小> 200KB左右。
是的,您可以引用任何带有参数(.php或任何扩展名)的服务器端页面,只要它返回该文件的正确Content-Type即可。
旁注:通常,如果您有参数并以这种方式动态提供文件,我相信除非您将其设置为自动缓存,否则它们不会自动缓存。
简单示例:
<link rel="stylesheet" type="text/css" href="/css.php?color=wide-red">
<?php
header('Content-Type', 'text/css; charset=utf-8');
$colorScheme = (string)您的CSS和Javascript文件已缓存,我不建议提供不同的样式表/ js文件,除非它们的大小> 200KB左右。
是的,您可以引用任何带有参数(.php或任何扩展名)的服务器端页面,只要它返回该文件的正确Content-Type即可。
旁注:通常,如果您有参数并以这种方式动态提供文件,我相信除非您将其设置为自动缓存,否则它们不会自动缓存。
简单示例:
<*>
你可以使用echo,你可以使用模板系统,你可以用file_get_contents拉入其他css文件,关键是你需要发送正确的Content-Type,抓取正确的参数并且如果没有参数则有默认的回退给出了。
GET['color'];
switch ( $colorScheme ) {
case 'wide-red':
$bgColor = 'c0c0c0';
$fgColor = 'ffffff';
$width = '1280px';
break;
case 'normal-gray':
$bgColor = '333333';
$fgColor = 'ffffff';
$width = '960px';
}
break;
}
?>
body {
background:<?php echo $bgColor;?>;
color:<?php echo $fgColor;?>;
width:<?php echo $width;?>;
}
你可以使用echo,你可以使用模板系统,你可以用file_get_contents拉入其他css文件,关键是你需要发送正确的Content-Type,抓取正确的参数并且如果没有参数则有默认的回退给出了。