使用bootstrap-sass gem覆盖Rails中的Bootstrap变量

mai*_*aik 33 css ruby-on-rails twitter-bootstrap

我正在使用bootstrap-sass托马斯麦克唐纳的宝石(Bootstrap 3.0).我遵循了Daniel Kehoe 的 Bootstrap和Rails教程.

application.css.scss在顶部有以下内容:

 /*
 *= require_self
 *= require_tree .
 */
Run Code Online (Sandbox Code Playgroud)

我有framework_and_overrides.css.scss这条线:

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

现在我尝试覆盖$body-bg: #f00;我在这里找到的引导变量()并将它们放在这两个文件中的任何一个但没有任何变化.我究竟做错了什么?

NAR*_*KOZ 54

您可以通过在指令之前重新定义变量来覆盖变量@import.

例如:

$navbar-default-bg: #312312;
$light-orange: #ff8c00;
$navbar-default-color: $light-orange;

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

  • 在Sass中,变量需要先定义才能使用 - 在这种情况下,如果要重新定义变量,需要在`@ import`指令之前完成,这样Bootstrap scss文件就可以使用它.它们没有被默认值覆盖的唯一原因是因为[默认值都使用`!default`标志](https://github.com/twbs/bootstrap-sass/blob/master/vendor/assets /stylesheets/bootstrap/_variables.scss),意味着如果尚未定义变量,它们将仅使用该值. (16认同)
  • 只是想补充一点,如果你使用Less会有所不同,因为它使用了[变量范围]的概念(http://lesscss.org/features/#features-overview-feature-scope)(而在Sass中变量是全局的,并且允许你重新定义变量_after_ the` @ import`,因为它们在任何内部作用域之前加载,而这些变量只是覆盖默认值(不需要`!default`). (2认同)