Php 向SASS发送动态变量

Php 向SASS发送动态变量,php,css,sass,dynamic-variables,Php,Css,Sass,Dynamic Variables,我目前正在一个新项目中工作,该项目允许用户根据自己的喜好改变网站的外观。他们可以更改背景颜色和其他内容,这些内容会保存在数据库中供以后使用,也可以存储在cookie中。然而,我一直在使用一个php文档来模拟样式表,这样我就可以传递像这样的变量。这里似乎缺乏基本的理解,所以我将提供一个简短的答案和一个较长的答案 短的 不能将动态变量发送到Sass。PHP可能有一些端口使其成为可能,但仅使用Sass是不可行的 比较长的 您可能需要熟悉它,以及它如何适合您的工具包。听起来你在使用PHP,所以我想你会用

我目前正在一个新项目中工作,该项目允许用户根据自己的喜好改变网站的外观。他们可以更改背景颜色和其他内容,这些内容会保存在数据库中供以后使用,也可以存储在cookie中。然而,我一直在使用一个php文档来模拟样式表,这样我就可以传递像
这样的变量。这里似乎缺乏基本的理解,所以我将提供一个简短的答案和一个较长的答案

短的 不能将动态变量发送到Sass。PHP可能有一些端口使其成为可能,但仅使用Sass是不可行的

比较长的 您可能需要熟悉它,以及它如何适合您的工具包。听起来你在使用PHP,所以我想你会用PHP渲染HTML模板/使用DB magic,也许用少量JavaScript来编写客户端脚本,你的网站上会有CSS(普通的CSS)样式元素

Sass/SCSS(以下简称Sass)并没有取代CSS(您永远不会看到
),它只是为编写样式提供了一种不同的语法,这些样式后来被编译成CSS


Sass通常在您将资产发送到生产环境之前编译为CSS,而不是在用户请求时生成。您的Sass文件和HTML文档之间没有真正的联系,因此您无法将任何变量传递给您的Sass文件。

@imjared描述了为什么Sass不是一个合适的解决方案,我将尝试提出一个好的解决方案


从PHP脚本提供动态CSS的解决方案不好,因为它不允许缓存。每个用户每次刷新页面或跟随链接时都必须下载CSS文件

您需要做的是生成CSS文件,将它们保存为实际文件,并提供指向它们的动态链接


文件名可以等于相应用户的名称(请格外小心清理文件名),然后每次用户更新其样式时都会重写CSS文件。

sass!==指南针
。有了SASS,您可以在样式表中定义变量,就像在php中一样,您可以在任何需要的地方使用它们?甚至get或post变量?Sass无法导入PHP代码(为什么您希望它能够导入?)。Sass并不像PHP那样是动态的:Sass代码被编译成一个普通的CSS文件,不打算在运行中重新编译。它没有状态的概念(没有get/request/post/cookie变量)。我知道它是预编译的,但是在阅读了这个问题之后,他们提到做了类似的事情,但是他们使用phpsass,我只是想知道是否可以仅使用Sassys来实现,有PHP端口可以从PHP动态编译SASS,例如,或者,问题只是开销是否值得,以及您是否需要变量之外的其他SASS功能。这是关于更少,而不是SASS,但给出了如何实现这一点的想法:“从PHP脚本提供动态CSS的解决方案不好,因为它不允许缓存。每个用户每次刷新页面或跟随链接时都必须下载CSS文件。”“那完全是假的。PHP文件通常可以像任何其他文件一样进行缓存。您可以使用内部逻辑来确定scss文件是否已更改,并仅在必要时重新编译它,否则会像任何其他文件一样返回304 not modified标头。我不是说这是有效的,但这仍然是可能的。