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

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

评论

看下面的编辑。

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

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

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

#1 楼

我现在实际上发现了一些东西:
http://leafo.net/lessphp/lessify/

它执行基本的格式化,例如:

#header {
/* ... */
}

#header p {
/* ... */
}




#header {
/* ... */
p {
/* ... */
}
}


#2 楼

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

只需获取CSS并将其重命名为LESS文件即可。然后将LESS特定的功能与您的更改一起使用。您更新文件的次数越多,使用LESS功能的能力就越强。用SCSS重写所有CSS几乎是不可能的(并且浪费大量时间)。我只是简单地对其进行了重命名,然后每次使用CSS文件时,我都会在代码上执行一些小的重构,以利用mixin,变量等。

评论


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

– Su'
2011年10月2日,9:59

#3 楼

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

Least可以更好地进行优化,并且似乎更具功能性。它甚至可以为您处理伪类:

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

这些工具非常适合处理大型的现有CSS文件。以下是我建议将CSS转换为LESS的步骤(请确保保留原始CSS文件的副本):


如果要使用多个附加CSS文件,请合并它们成一个CSS文件。这样可以确保一切都在一起并进行优化。
通过在线CSS清理实用程序运行生成的CSS代码。我在cleancss上取得了不错的效果:http://www.cleancss.com/。这将删除LESS转换器可能无法捕获的所有多余和多余的标记。
删除@Media并重置CSS文件中的所有样式。它们可能会产生问题或引入可能的冗余。将重置保存在一个单独的文件中可能是个好主意。
将生成的CSS文件粘贴到Least中并观看野兽。
重新引入您的重置和@screen。
现在您已经完成了,遍历每个属性,找到适合重构的候选对象,然后将它们转换为LESS变量和表达式。 CSS颜色和字体属性是最容易排除的属性,简单的全局搜索和替换效果很好。最后,您可以决定是否要将单个文件分解为较小的逻辑文件。您可能会发现该过程使您以其他方式重新组织文件。

我不是Least的作者,而是某个正在寻找类似工具并决定向世界介绍它的人。

评论


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

–Lèsemajesté
2012年4月26日在5:20

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

–乔尔·罗杰斯(Joel Rodgers)
2012年5月1日在1:49

啊,我实际上没有单击链接。我以为它们是桌面工具。那确实有道理。

–Lèsemajesté
2012年5月1日下午2:42

#4 楼

我认为转换器没有任何方法可以知道要使用大部分代码做什么。例如,它不一定知道要使用什么变量。或如何生成mixin或函数。

我认为与此相关的您将需要手动进行。

评论


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

– Su'
2011年10月2日,0:15

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

–trusktr
2012-03-20 21:22

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

–乔尔·罗杰斯(Joel Rodgers)
2012年4月26日,0:28

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

– Peter Taylor
2012年4月26日上午11:15

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

–乔尔·罗杰斯(Joel Rodgers)
2012年5月1日在1:57



#5 楼

如何搜索和替换。

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

,只需搜索color:#ffffffcolor : #ffffff并替换为@color

我通常不信任这些工具。

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

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

评论


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

– dotweb
2011年10月1日17:58

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

–fatnjazzy
2011年10月1日17:59

您将找不到能够可靠地将纯CSS转换为使用LESS mixins的工具。

– Alex
2011年10月1日在18:01

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

– dotweb
2011年10月1日在19:29

#6 楼

尝试以下站点:css2less.cc

,当您键入时,它将CSS转换为LESS。