将数据传递到动态 CSS 文件


Passing data to dynamic CSS file?

这更多的是浏览器会做什么的问题,而不是后端架构的问题。

正在使用codeigniter并有一个控制器设置来处理资产(CSS,JS和图像),目前我只是处理CSS文件中的PHP并将它们作为CSS文件呈现给浏览器,因此www.mysite.com/asset/home.css将调用资产类并从单个文件生成用于主页的CSS文件。

我想使对CSS文件的请求更加动态,以便请求将确定应合并的多个文件,然后传递给less.php进行解析和最小化。

考虑到缓存问题,将变量传递给 CSS 类的最佳方法是什么?平面链接 URI 变量?传统的获取 URI? 我可以使用数据库为其组件引用给定的名称,但这不是很多开销吗?

欢迎任何想法或意见!

++ 浏览器如何处理类似standard.menu.comments.css

+++ 我最终将 URI 字符串附加到文件中。 它没有我想要的那么干净,但它似乎正在工作。 我可能会很快转向以斜杠分隔的 URI 解析器来清理请求行。 感谢您的帮助!

您可以使用以下标头创建文件style.php

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

并在模板中链接此样式:

<link rel="stylesheet" type="text/css" media="screen" href="style.php?color=red">

然后你可以在style.php中导入一些样式表:

@import ("someStyle.css");

或者,您可以传递一些$_GET变量并创建条件样式:

<?php 
    if ($_GET['color'] == 'red')
    {
        echo ".myBlock {background: #ff0000;}";
    } 
    else
    {
        echo ".myBlock {background: #00ff00;}";
    }
?>

如果您只是不希望缓存.css文件,请将随机 $_GET 变量附加到链接样式中:

<link rel="stylesheet" type="text/css" media="screen" href="style.css?<?php echo time(); ?>">