41

我目前在一个项目上使用 Twitter Bootstrap,包括 LESS 文件并使用我们编写的一些额外的 LESS 代码进行编译。

最新版本意味着我们需要覆盖一些 Bootstrap LESS 变量。这里的一个选择是维护一个修改后的 Bootstrap 副本,我们会在每个版本中对其进行修补。

但我注意到,可以通过在 import 语句之后@import重新声明变量来覆盖 LESS 文件中定义的变量。

例如:

@import "twitter-bootstrap/bootstrap.less";
// Restore base font size to pre 2.1.1 defaults
@baseFontSize:          13px;
// Add some custom LESS code here

这是不好的做法吗?它是 LESS 编译器工作方式的产物,还是它的预期部分?尽管我确实找到了以下两个参考资料,但我找不到太多关于此的信息:

由于 Less 编译器中的错误,您可以通过在最初声明变量后更改它来覆盖变量的“常量”值。

http://rubysource.com/how-to-customize-twitter-bootstrap%E2%80%99s-design-in-a-rails-app

通过覆盖这三个变量(在声明 grid.less 导入之后)自定义列和装订线。

http://semantic.gs/

LESS 网站本身说变量是“常量”:

http://lesscss.org/

请注意,LESS 中的变量实际上是“常量”,因为它们只能定义一次。

但后来我看到其他网站使用这种方法。这肯定比维护供应商分支更容易,而且似乎与 less.js 一起工作得很好。

希望有任何关于这是否是一件坏事的想法!

4

2 回答 2

46

行!上述问题之一引发了对预期行为的讨论,结果证明覆盖 LESS 变量很好。

您的声明将在 CSS 的同一范围内相互覆盖;LESS 也是如此。

https://github.com/cloudhead/less.js/issues/297

就像在 CSS 中一样,在范围内覆盖是使用 LESS 的一种预期方式。

于 2012-12-11T04:01:56.940 回答
6

没关系!

我通常使用“组件”和具有默认值的变量创建一个较少的文件。然后我导入一个具有相同变量但“客户”值的文件,覆盖默认值。这样,我只需更改一些值即可为每个客户创建新设计。

没关系,非常有用。

于 2013-10-03T07:43:13.467 回答