SASS和/或LESS - 我可以动态创建动态CSS文件吗?

时间:2013-03-21 13:57:02

标签: php cakephp compiler-construction sass less

我正在使用CakePHP来构建我的网站(如果这很重要)。我有一大堆元素/模块,每个都有自己的文件和相当复杂的CSS(在某些情况下)。

目前CSS是一个庞大的单个CSS文件,但为了理智(以及下面提到的细节),我希望能够将CSS保存在它自己的相应文件中 - 即css/modules/rotator.css。但是使用普通的CSS,可以调用一系列CSS文件。

所以,我开始按照建议调查SASS或LESS。但是 - 似乎这些应该被编译然后上传。但在我的情况下,每个页面都可以通过CMS进行编辑,因此一个页面可能有一个10分钟的模块,然后在CMS更改后可能有20或5个等等。如果它不打算使用它,我不想为每个模块编译CSS。

有没有办法可以拥有大量的CSS文件,这些文件都是动态编译的?

旁注:我还想允许用户为页面和/或模块编辑自己的CSS,然后在默认CSS之后加载。 SASS和/或LESS可以实现吗?

我不需要一个完整的演练(虽然那会很棒)但是到目前为止我的搜索已经返回了与Ruby on Rails相关的东西(从未使用过)或者每个CSS语言的通用教程

欢迎任何其他建议。我是一个完整的SASS / LESS noob。

澄清问题:

如何使用LESS动态(服务器端)组合多个CSS文件? (即使是能够让我走上正轨的资源的链接也很多!)

4 个答案:

答案 0 :(得分:6)

如果你想减少CSS文件的数量&你有一个巨大的css文件,其中包含所有组件css,只需在所有页面上链接到它。确保正确设置缓存标头。

他们将加载文件一次并在任何地方使用它。一个陷阱是初始页面加载时间;如果这不是问题,请使用此解决方案。如果是一个问题,请考虑将已编译的CSS文件分解为几个主要块(default.css,authoring.css,components.css等)。

不要试图为每个组件集合制作一个自定义css,你实际上会强迫用户重新下载以不同方式重新组织的相同CSS。“

答案 1 :(得分:3)

查看lessphp(http://leafo.net/lessphp/)。这是一个较少的php实现,可以通过比较时间戳重新编译已更改的文件。

答案 2 :(得分:1)

假设'on the fly'意味着'在页面加载',这可能比发送多个文件更慢。我建议的是每当保存模块时重新编译样式表。

答案 3 :(得分:0)

只需要必要模块的问题应该通过CMS解决。它与SASS或LESS无关。

如果您的CMS知道当前页面有哪些模块,请不要运行SASS / LESS编译(除非您实现缓存并不是一项简单的任务,否则它将非常缓慢)。相反,调整CMS的逻辑,使其包含每个模块的CSS文件。

Drupal等高级CMS不仅会自动获取必要的CSS文件,还会将它们组合到一个文件中并对其进行压缩。

如果您的CSS不知道当前页面具有哪些模块(例如“模块”只是保存在帖子正文中的HTML代码),那么您无法真正做任何事情。

UPD:正如红杉mcdowell 在他的回答中所说,让用户下载一个大型CSS文件一次比让他们下载包含重复代码的一些较小CSS文件更好。所有这些较小的CSS文件的累积大小将大于完整CSS文件的大小。

相关问题