将.css文件导入.less文件


228

可以将.css文件导入.less文件...吗?

我对较少的内容非常熟悉,并将其用于我的所有开发。我经常使用如下结构:

@import "normalize";

//styles here

@import "mixins";
@import "media-queries";
@import "print";

所有导入文件都是其他.less文件,并且可以正常运行。

我当前的问题是:我想将.css文件导入.less,以引用.css文件中使用的样式,如下所示:

@import "../style.css";

.small {
    font-size:60%;
    .type;
}
// other styles here

.css文件包含一个名为的类,.type但是当我尝试编译.less文件时,出现错误NameError: .type is undefined

.less文件不会仅导入其他.less文件...吗?还是我引用错了...?!


5
LESS归结为CSS,因此您应该能够将style.css重命名为style.less,然后照常导入...除非当然不重命名style.css
千篇一律

3
是的,很遗憾,实际上无法重命名.css文件。
乔尼·伍德先生2012年

1
有同样的问题。请支持以下问题github.com/cloudhead/less.js/issues/303
Yaroslav

5
如果不需要从外部引用.css,并且同时不必修改(重命名).css文件,则可以创建具有.less扩展名的指向该文件的符号链接。然后将其作为.less文件引用。作为符号链接,它减轻了同步它们的负担,因为您的.css更改会立即影响要导入的.less文件。缺点是您应在后续更改后重新编译最终的CSS。有关在Windows中创建符号链接的信息,请MKLINK /?在命令窗口中键入
Ivaylo Slavov

@jackwanders,不需要重命名,因为LESS会退回到CSS(正如您正确指出的那样)。您可以.css使用inline (less)指令导入文件,并利用.css语法是一种有效.less语法的事实
ira,2017年

Answers:


316

您可以通过指定选项来强制将文件解释为特定类型,例如:

@import (css) "lib";

将输出

@import "lib";

@import (less) "lib.css";

将导入lib.css文件,并将其视为更少。如果您指定的文件较少并且不包含扩展名,则不会添加任何文件。


1
这是正确的答案。第三个将导入+编译CSS代码,使其成为更少的代码,并且不会保留该指令的完整性。
CMCDragonkai 2013年

1
我认为应该使用@import(包括)“ lib.css”。我不喜欢对编译器撒谎的语义。当然,当您知道文件中没有任何LESS代码时。

16
这将为foo.css创建一个额外的http-request,因此该(inline)指令(请参见stackoverflow.com/a/22594082/160968)现在更可取
Urs

1
(inline)无法使用,因为它不会将外部引用转换为字体或其他@import'ed CSS文件。你刚刚结束了与导致很多404所的HTTP请求的更大的CSS文件....
user3338098

回滚最新的编辑,因为它只是不正确的,并没有回答这个问题:
七阶段-MAX

246

如果希望将CSS复制到输出中而不进行处理,则可以使用(inline)指令。例如,

@import (inline) '../timepicker/jquery.ui.timepicker.css';

7
完善。当您要合并一些CSS文件(例如,在ie7.less中),但不一定要处理它们时(例如,bootstrap-ie7使用表达式,LESS处理得不好),此方法效果很好。

4
很有帮助。@import (css) "styles.css";没有为我工作。
ivkremer 2014年

10
它们都针对不同的用例。使用(css),该@import指令将保持原样,结果CSS文件将在运行时由浏览器加载;使用(inline),实际上将CSS文件的内容导入到已编译的样式表中,例如,如果该文件不在您的Web根目录下,这就是您想要的。请注意,@import读取.css文件时的默认行为与带有(css)标记的默认行为相同-请阅读文档以获取更多信息:)
neemzy 2014年

因此,如果您的css文件具有@import需要“处理”的指令,那么这显然将行不通。
user3338098 2015年

“内联”是否意味着所有导入也将内联?有没有办法递归内联?
路灯

29

我必须在1.7.4版本中使用以下内容

@import (less) "foo.css"

我知道可以接受的答案是,@import (css) "foo.css"但是没有用。如果要在新的less文件中重用CSS类,则需要使用(less)和而不是(css)

检查文档


2
最初接受的答案具有正确的选项(是的,如果您想重用某些样式的css文件,这(less)唯一的选择),但是由于某种原因,@ Fractalf用他的最新编辑删除了正确的部分。
最多可容纳7个相位,2014年

1
您可以将“参考”和“更少”结合使用:@import (less, reference) "foo.css"
Skarllot '16

28

将css文件的文件扩展名更改为.less。您不需要在其中写任何LESS;所有CSS都是有效的(除了您必须转义的MS内容,但这是另一个问题。)

根据Fractalf的回答,此问题已在v1.4.0中修复


4
从技术上讲,这不是导入CSS文件。
nilskp 2012年

@nilskp你是正确的;但是如果要在另一个文件中使用这些类,则需要一个LESS文件而不是CSS。
数学2012年

1
@nilskp您是说要想将文件解析为LESS,更改扩展名的要求太多了?
数学2012年

23
是的,当然是。尝试在拥有所有文件的某个小型家庭项目之外进行思考。考虑更大的,多人的项目,不是每个人都在使用LESS。在许多用例中,无法更改文件名。
nilskp 2012年

1
您应该注意自己的CSS是否包含以下内容:calc(100%-45px); 而您想要在浏览器中。如果less较少处理文件,则最终输出将是:calc(55%); 因为计算较少。
Christof Aenderl 2014年

8

LESS网站上

如果要导入CSS文件,并且不想让LESS处理它,只需使用.css扩展名:

@import“ lib.css”; 该指令将保持不变,并最终显示在CSS输出中。

正如jitbit在下面的评论中指出的那样,这实际上仅对开发有用,因为您不想有不必要@import的消耗宝贵的带宽。


14
这不会导入文件,它将保留@import指令完整。它仍然可以工作,但是你应该避免CSS-进口-看看这个developers.google.com/speed/docs/best-practices/...
亚历克斯

5
感谢您的信息@jitbit。就个人而言,我发现@import在开发过程中更易于使用,然后在进入生产环境时将导入的文件合并并缩小到一个样式表中。
webdevkit 2012年

1
如果您仔细阅读了该问题(而不仅仅是标题行),您会发现OP希望将css文件中的类作为mixin引用,如果仅将其解析为简单的css导入则不可能。
2014年

7

试试这个 :

@import "lib.css";

从官方文件:

您可以同时导入css和更少的文件。仅处理较少的文件导入语句,而css文件导入语句保持原样。如果要导入CSS文件,并且不想让LESS处理它,只需使用.css扩展名:


资料来源: http : //lesscss.org/


2
如果您仔细阅读了该问题(而不仅仅是标题行),您会发现OP希望将css文件中的类作为mixin引用,如果仅将其解析为简单的css导入则不可能。
2014年

6

如果您只想导入CSS文件作为参考(例如,使用Mixins中的类),但不希望这样做将整个CSS文件包含在结果中,则可以使用@import (less,reference) "reference.css";

我的

 @import (less,reference) "reference.css";
 .my-class{
     background-color:black;
     .reference-class;
     color:blue;
 }

reference.css

.reference-class{
    border: 1px solid red;
}

*结果(my.css)与lessc my.less out/my.css*

.my-class {
  background-color: black;
  border: 1px solid red;
  color: blue;
}

我正在使用 lessc 2.5.3


这就是我所需要的。但是,我必须使用扩展语法:&:extend(.reference-class all);。直接引用该类会导致编译错误。
延斯·纽鲍尔

4

如果要导入应尽量减少的css文件,请使用以下行:

.ie {
  @import (less) 'ie.css';
}

3

从1.5.0开始,您可以使用'inline'关键字。

示例:@import(内联)“ not-less-compatible.css”;

当CSS文件可能不兼容时,您将使用此选项。这是因为尽管Less支持大多数已知的标准CSS,但在某些地方它不支持注释,并且不修改CSS就不支持所有已知的CSS hack。因此,您可以使用它在输出中包含文件,以便所有CSS都在一个文件中。

(来源:http : //lesscss.org/features/#import-directives-feature

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.