使用 PHP 的 CSS 变量

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。 立即开始使用 $200 免费信用额度!

当人们被问及他们想要在 CSS 中添加哪些功能时,“变量”总是会出现在答案中。 这是否是一个好主意,我个人还没有决定,但我倾向于认为是。 无论如何,使用 PHP,在 CSS 中使用变量轻而易举。 这当然不是一个新技巧,但我从未专门介绍过它,所以我认为我应该介绍一下。

Style.php

不要使用 .css 文件扩展名,而要使用 .php

<link rel='stylesheet' type='text/css' href='css/style.php' />

Content-type

在新的 style.php 文件的顶部,将 Content-type 设置回 CSS

<?php
    header("Content-type: text/css; charset: UTF-8");
?>

设置变量

现在您可以为任何您喜欢的元素设置变量

<?php
    header("Content-type: text/css; charset: UTF-8");

   $brandColor = "#990000";
   $linkColor = "#555555";
   $CDNURL = "http://cdn.blahblah.net";
?>

使用变量

在所有 PHP 代码之后,您可以开始编写普通的 CSS,只是您可以混合一些 PHP 来输出这些变量。

#header {
   background: url("<?php echo $CDNURL; ?>/images/header-bg.png") no-repeat;
}
a {
  color: <?php echo $linkColor; ?>;
}

...

ul#main-nav li a {
  color: <?php echo $linkColor; ?>;
}

扩展功能/其他想法

  • 在您进行这些操作的同时,也可以使用 PHP 压缩 CSS
  • 理论上,您可以提取用户代理并尝试执行特定于浏览器的 CSS,但这样做会遇到很多问题,不建议使用。
  • 提取日期/时间,并可能为不同的季节或一天中的不同时间更改网站上的某些内容。
  • 生成一个随机数,测试结果,使用它为您的页眉设置一个随机背景图像。

无法正常工作?

我创建了一个完全静态的测试页面,它运行良好,然后我在 WordPress 网站中尝试了相同的技术,但没有成功。 对我来说,解决方案是将文件命名为 style.css,并使用 .htaccess 将其解析为 PHP。 只需确保此代码位于与 CSS 文件相同的目录级别的 .htaccess 文件(仅限 Apache 服务器)中。 然后,像使用任何其他 PHP 文件一样,在其中使用 PHP。

<FilesMatch "^.*?style.*?$">
SetHandler php5-script
</FilesMatch>

Carlo DeAgazio 写信说,这对他来说在 WordPress 中有效。

<?php
 $absolute_path = explode('wp-content', $_SERVER['SCRIPT_FILENAME']);
 $wp_load = $absolute_path[0] . 'wp-load.php';
 require_once($wp_load);

  /**
  Do stuff like connect to WP database and grab user set values
  */

  header('Content-type: text/css');
  header('Cache-control: must-revalidate');
?>