我想对我使用CSS的方式进行一些更改。我希望能够使用变量来定义颜色或其他东西。所以我可以做以下
var red = '#FF0000';
当然,在适当情况下,红色将被替换为“#FF0000”。
我该怎么做?我知道如何,我只是不知道正则表达式,或者即使这是最好的方法。
答案 0 :(得分:4)
你可以这样做。只需将您的PHP写入您的.css文件就像HTML文件一样,然后告诉您的网络服务器(可能是apache)用PHP解析该文件。
您可以将其添加到css目录中的.htaccess文件中:
AddHandler php5-script .css
然而,这是一种糟糕的技术,因为它会减慢css文件的加载速度,并防止最终用户缓存产生很大的速度差异。不过,对于不关心性能的网站来说,它可以是一个方便的快捷方式。
答案 1 :(得分:3)
处理此问题的最佳方法是创建一些模板文件,然后使用php脚本处理它们并输出平面CSS文件。你可以在互联网上挖掘并找到一些不错的CSS最小化器,而你正在努力,以挤出更多的性能。要记住以下几点:
1)安全性 - 如果您的构建器脚本将通过Web运行,那么将模板文件保留在Web根目录之外可能是个明智之举。如果是我,我会将构建器和模板保留在Web根目录之外,并从命令行运行构建器脚本。
2)如果你的CSS足够复杂,这确实是值得的,那么就要长时间地考虑“事情的名字”。 $ red不是一个特别好的名字。由于它现在是可变的,在某些时候$ red实际上可能是蓝色的(如#00F)!每次我这样做,为样本表中的值表示变量的描述性名称都是一个真正的难题。
编辑:在我回答这个问题的时候,我发现了compass,它解决了这个问题,而且非常方便。在尝试推出自己的动态CSS系统之前,绝对值得一看。
答案 2 :(得分:2)
您可以执行以下操作:
style.css.php
<?php
header('Content-type: text/css');
$red = '#F00';
?>
body {
background: <?=$red?>
}
这应该可以正常工作。
答案 3 :(得分:0)
当遇到同样的问题时,我将尽可能多的不变css放入外部css文件并回显改变为HTML / PHP文件头部的css。这打破了将所有css都放在外部文件中的愿望,但是创建非标准Apache配置的成本并不值得拥有外部css文件的教条。
答案 4 :(得分:0)
首先像Paul McMillan说的那样将此添加到您的.htaccess文件中(代码可能因您使用的托管公司而异)
AddHandler php5-script .css
其次使您的whatever.css
文件看起来像(例如,动态更改标题背景)
<?php header('Content-type: text/css'); ?>
#header {
background-image: url("http://myurl.com/images/<?php switch (rand(0,4)) {
case 0:
echo 'green';
break;
case 1:
echo 'red';
break;
case 2:
echo 'blue';
break;
case 3 :
echo 'purple';
break;
case 4:
echo 'orange';
break;
}
?>.png");
}
答案 5 :(得分:0)
执行您正在寻找的内容的最佳方式可能是使用CSS框架。 看看CSScaffold
您可以非常轻松地定义常量:
@constants {
red: #f00;
}
最好的部分之一是你可以使用mixins将css样式包含在你想要的任何选择器中。