使用PHP改进我的CSS

时间:2009-10-31 22:41:58

标签: php css

我想对我使用CSS的方式进行一些更改。我希望能够使用变量来定义颜色或其他东西。所以我可以做以下

var red = '#FF0000';

当然,在适当情况下,红色将被替换为“#FF0000”。

我该怎么做?我知道如何,我只是不知道正则表达式,或者即使这是最好的方法。

6 个答案:

答案 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样式包含在你想要的任何选择器中。