是否有将CSS转换为less.css的工具?


21

我有一个很大的CSS文件,我想转换成更少的文件。当我写CSS时,我不知道less.css,但是现在我仍然想使用我的旧CSS。

有没有可以帮助我自动转换的工具?


看下面的编辑。
fatnjazzy 2011年

您应该检查@Simone Carletti的回复,并可能在您真正询问的内容上进行扩展。除了重命名文件之外,可能不需要任何实际的“转换”。
Su

有趣,但是我想知道是否值得添加33KB的JS代码(less.js)以减小CSS文件的大小。
Marco Demaio 2011年

1
我显然没有使用JavaScipt编译器。CSS的大小并不是我使用它的原因。可维护性是原因。:)
js-coder

Answers:



15

实际上,您不需要任何转换工具即可开始使用LESS。LESS语法与CSS向后兼容。这意味着任何CSS文件也是有效的LESS文件。

只需获取CSS并将其重命名为LESS文件即可。然后,使用LESS特定的功能以及所做的更改。您更新文件的次数越多,使用LESS功能的能力就越强。

我对SCSS和包含10个CSS文件的非常大的项目也进行了相同的操作。用SCSS重写所有CSS几乎是不可能的(并且非常浪费时间)。我只是简单地对其进行了重命名,然后每次使用CSS文件时,我都会在代码上执行一些小的重构,以利用mixin,变量等。


这提出了一个非常好的观点。到目前为止,答案似乎集中在问题的“转换”部分,进行混合操作等,而不仅仅是将当前文件用于切换到LESS工作流中。
Su

6

你看过最少了吗?与CSS相比,转换CSS更好。特别是,Lessify不能很好地优化您的类。它将浏览器重置复制到其所有生成的mixin,从而创建冗余属性。显然,它仍处于试验阶段。两种实用程序都无法确定语义,因此它们无法将值转换为表达式,var或参数混合。

最少可以更好地进行优化,而且似乎功能更强大。它甚至为您处理伪类:

http://toki-woki.net/p/least/

这些工具是使用大型现有CSS文件的理想选择。以下是我建议将CSS转换为LESS的步骤(请确保保留原始CSS文件的副本):

  1. 如果要使用多个附加CSS文件,请将它们合并到一个CSS文件中。这样可确保一切都无需进行优化。

  2. 通过在线CSS清理实用程序运行生成的CSS代码。使用cleancss取得了不错的效果:http ://www.cleancss.com/ 。这将删除LESS转换器可能无法捕获的任何多余和多余的标记。

  3. 删除@Media并重置CSS文件中的所有样式。它们可能会产生问题或引入可能的冗余。将重置保存在单独的文件中可能是一个好主意。

  4. 将生成的CSS文件粘贴到Least中并观看野兽。

  5. 重新介绍您的重置和@screen。

  6. 现在您已经完成了,遍历每个属性,找到合适的重构候选者,并将它们转换为LESS变量和表达式。CSS颜色和字体属性是最容易排除的属性,简单的全局搜索和替换效果很好。最后,您可以决定是否要将单个文件分解为较小的逻辑文件。您可能会发现该过程使您以其他方式重新组织文件。

我不是Least的作者,而是寻找类似工具并决定向世界介绍这一工具的人。


这些转换器不明白@import吗?我认为LESS能够解析@import语句,并在编译LESS文件时将所有样式表合并为一个CSS。似乎将所有组织得井井有条的CSS都转储到单个巨型样式表中,以便将其转换为LESS,这将是可维护性的倒退。
冒犯君主

它们确实可以,但是请记住,这些工具在线存在,因此您必须将它们剪切并粘贴到文本字段中,这样就无法访问您的外部样式表。
乔尔·罗杰斯

啊,我实际上没有单击链接。我以为它们是桌面工具。那确实有道理。
莱斯特·马耶斯特(Lèsemajesté),2012年

5

我认为转换器没有任何方法可以知道您想对大部分代码执行的操作。

例如,它不一定知道您要使用哪些变量。或如何生成mixin或函数。

我认为使用此工具需要手动进行。


同意 这里有一定的推断和知识,您的意图是计算机不太适合的。您将能够使某些任务自动化(请参阅@dotweb的链接),并可能将颜色值之类的内容整合到一个变量中,但这可能就是这样。
Su

是的,但是从LESS到CSS的转换是一对一的转换,因此理论上存在一些可以从CSS创建优化的LESS代码的算法...有人只需要编写它即可。
trusktr 2012年

Mixins可以采用任何一种方式,因为计算机很容易将选择器聚集在一起并进行嵌套。幸运的是,这是转换过程中最繁琐的部分,并且可以计算(请参阅我的回答)。无论如何,鉴于CSS的级联性质,它的呈现方式可能与原始CSS有所不同。变量和表达式是不可能的。计算机无法确定意图或语义。计算机如何计算CSS中的宽度:400实际上是LESS中的宽度:pagewidth / 2?转换器可能会将颜色和字体转换为变量。
Joel Rodgers 2012年

@JoelRodgers,为什么CSS的级联性质暗示“反编译器”会出现错误?(显然,反编译器可能有错误,但是原则上不难判断术语的重新排序是否会改变语义)。
彼得·泰勒

我说的是类声明和属性。您必须以完全相同的顺序声明它们,否则您将得到不同的结果。严重的错误,我的意思是嵌套规则而不是混合。
乔尔·罗杰斯

3

如何搜索和替换。

如果您有color:#ffffff并且想要将其更改为@color

只需搜索color:#ffffffcolor : #ffffff替换为即可@color

我通常不相信这些工具。

或者您可以编写一个非常简单的PHP脚本来处理它。

更新1
或者,您可以使用http://nex-3.com/posts/96-scss-sass-is-a-css-extension,它与less类似,并且具有转换工具。


是的,我已经考虑过了。但这是一个很大的文件,所以我想确保,这将是最简单的方法。)想一想混入等

或者您可以编写一个非常简单的PHP脚本来处理它。
fatnjazzy 2011年

1
您将找不到能够可靠地将纯CSS转换为使用LESS mixins的工具。
亚历克斯(Alex)

你是对的。自动变量和混合是无意义的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.