@Import of less files into a limited scope

2020-05-20 08:40发布

I want to import all styles from another less file, but into a limited scope. I'm trying this:

"my-site.less"

.wrapper-class {
    @import "path/to/styles.less";
}

But this doesn't work at all. I'm using the browser-based less.js option, and I can see the GET statement that is run when it actually does the import. But the resultant CSS does not contain any of the styles from the other sheet. If I do it like this, it works:

.wrapper-class 
{
    /* ... */
}
@import "path/to/styles.less";

But this defeats the original purpose. So is there any way to do a limited-scope @import like this in Less? Thanks!

标签: css less
3条回答
放我归山
2楼-- · 2020-05-20 08:55

According to the css-spec, the @import-declaration has to come before all other declarations in the css-file. So your @import inside the rule is expected to fail. I guess the @importing at the end of the file not failing is goodwill of the browser-vendors.

I guess LESS will abide by the same rules.

EDIT: the question is, why do you want to have those styles scoped? With proper declarations, this should not be necessary.

查看更多
男人必须洒脱
3楼-- · 2020-05-20 09:00

Since this question was posted and answered, pre-processors have implemented @import with scope. This now works in LESS, SASS and Stylus.

example:

.lt-ie9 {
  @import "ie8-fixes";
}
查看更多
Deceive 欺骗
4楼-- · 2020-05-20 09:06

The syntax of LESS (and CSS) don't allow @imports into CSS rules. Try use namespace:

styles.less

.styles {
    [your code]
}

Then, replace the @import for namespace:

.wrapper-class {
    .styles;
}

Reference:

http://lesscss.org/features/

查看更多
登录 后发表回答