将.css文件导入.less文件

Mr *_*ood 217 css import less

你能把.css文件导入.less文件......?

我很少熟悉并且用它来完成我的所有开发.我经常使用如下结构:

@import "normalize";

//styles here

@import "mixins";
@import "media-queries";
@import "print";
Run Code Online (Sandbox Code Playgroud)

所有导入都是其他.less文件,所有文件都可以正常工作.

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

@import "../style.css";

.small {
    font-size:60%;
    .type;
}
// other styles here
Run Code Online (Sandbox Code Playgroud)

.css文件包含一个被调用的类,.type但是当我尝试编译.less文件时,我得到了错误NameError: .type is undefined

.less文件不会导入.css文件,只能导入其他无文件文件吗?或者我引用它错了......?!

Fra*_*alf 308

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

@import (css) "lib";
Run Code Online (Sandbox Code Playgroud)

将输出

@import "lib";
Run Code Online (Sandbox Code Playgroud)

@import (less) "lib.css";
Run Code Online (Sandbox Code Playgroud)

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

  • 这将为foo.css创建一个额外的http请求,因此`(inline)`指令(请参阅http://stackoverflow.com/a/22594082/160968)现在是可取的 (15认同)

mpe*_*pen 239

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

@import (inline) '../timepicker/jquery.ui.timepicker.css';
Run Code Online (Sandbox Code Playgroud)

  • 它们都针对不同的用例.使用`(css)`,`@ import`指令将保持原样,因此CSS文件将在运行时由浏览器加载; 使用`(inline)`,CSS文件的内容实际上被导入到已编译的样式表中,如果该文件不在您的Web根目录中,那么这就是您想要的样式表.请注意,`@ import`ing`.css`文件时的默认行为与`(css)`标志相同 - [阅读文档](http://lesscss.org/features/#import-directives -feature)了解更多信息:) (10认同)
  • 完善.当你想要连接一些CSS文件时(例如在ie7.less中),这很有效,但不一定要处理它们(例如bootstrap-ie7使用表达式,LESS不能很好地处理). (7认同)
  • 很有帮助.`@import(css)"styles.css";`对我来说不起作用. (4认同)

Gud*_*ain 29

我不得不在版本1.7.4中使用以下内容

@import (less) "foo.css"
Run Code Online (Sandbox Code Playgroud)

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

查看文档.

  • 接受的答案最初有正确的选项(是的,`(less)`是*only*选项,如果你想重用一些css文件的样式)但由于某种原因@Fractalf用他最新的编辑删除了正确的部分. (2认同)

Mat*_*ics 28

将css文件的文件扩展名更改为.less.你不需要写任何LESS; 所有CSS都是有效的LESS(除了你必须逃脱的MS之外,这是另一个问题.)

根据Fractalf的回答,这在v1.4.0中已得到修复

  • 是的,当然是.尝试在一些你拥有所有文件的小型家庭项目之外思考.想想更大的多人项目,并不是每个人都使用LESS.有大量用例无法更改文件名. (23认同)
  • 从技术上讲,这不是导入CSS文件. (4认同)

Qua*_*cal 8

来自LESS网站:

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

@import"lib.css"; 该指令将保持原样,最终在CSS输出中.

正如jitbit在下面的评论中指出的那样,这实际上只对开发目的有用,因为你不希望有不必要@import的消耗宝贵的带宽.

  • 这不会导入文件,它会保留@import指令.它仍然有效,但您应该避免使用css-import - 请查看此https://developers.google.com/speed/docs/best-practices/rtt#AvoidCssImport (14认同)
  • 感谢@jitbit的信息.就个人而言,我发现在开发过程中使用"@ import"更容易,然后在转移到生产时将导入的文件组合并缩小为单个样式表. (5认同)

Dr.*_*eon 7

试试这个 :

@import "lib.css";
Run Code Online (Sandbox Code Playgroud)

来自官方文件:

您可以导入css和less文件.只处理较少的文件import语句,css文件import语句保持不变.如果要导入CSS文件,并且不希望LESS处理它,只需使用.css扩展名:


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

  • 如果你仔细阅读这个问题(而不仅仅是标题行),你会发现OP想要在css文件中引用一个类作为mixin,如果只是通过简单的css导入解析它是不可能的. (2认同)

hin*_*nks 6

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

my.less

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

reference.css

.reference-class{
    border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

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

.my-class {
  background-color: black;
  border: 1px solid red;
  color: blue;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 lessc 2.5.3


Cha*_*les 5

如果你想导入一个应该较少使用的 css 文件,请使用这一行:

.ie {
  @import (less) 'ie.css';
}
Run Code Online (Sandbox Code Playgroud)