ruby-on-rails - Rails bootstrap-sass 重新定义/重载 mixins

标签 ruby-on-rails ruby-on-rails-3 twitter-bootstrap sass mixins

使用 bootstrap-sass,您可以通过在导入 bootstrap 之前定义变量来重载变量(如文档中所示):

$btnPrimaryBackground: #f00;
@import "bootstrap";

遗憾的是,它不适用于 mixins,因为在 SASS 中它们可以重新定义/重载。

重载 twitter bootstrap mixins 的最佳方法是什么?到目前为止,唯一的方法似乎是克隆 lib 中的 gem 并添加修改 _mixins.scss 或在之后包含我的自定义 _mixins.scss。

有什么想法可以使它更易于维护吗?

最佳答案

根据帖子,Reopen SASS Mixins , 可以覆盖 mixins。但是,如果您在调用 import "bootstrap"; 之前定义了自定义在 Bootstrap 中定义的将覆盖它。另一方面,如果你把它放在导入之后,那么在你重新定义 mixin 时,所有的 Bootstrap 代码都已经编译完成了(参见 Issue #240Issue #420 )。将来可能会增加对后一种选项的支持。

在那之前,我能想到的一个选项(尚未测试)是从 中分离出变量和混合。 _bootstrap.scss 以便您可以在使用前重新定义 mixins。

首先,注释掉 中的前两个 import 语句。 _bootstrap.scss :

// Core variables and mixins
//@import "bootstrap/variables"; // Modify this for custom colors, font-sizes, etc
//@import "bootstrap/mixins";

然后在导入 Bootstrap 的 SASS 文件中,应将其更改为包含以下内容:
$btnPrimaryBackground: #f00;

// Core variables and mixins
@import "bootstrap/variables";
@import "bootstrap/mixins";

// Override of mixin for form field states
@mixin formFieldState($textColor: #555, $borderColor: #ccc, $backgroundColor: #f5f5f5) {
  // customization here
}

@import "bootstrap";

在此工作流程下,您仍将编辑供应商文件,但至少您可以将其限制为仅注释掉的几行。

关于ruby-on-rails - Rails bootstrap-sass 重新定义/重载 mixins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758340/

相关文章:

ruby-on-rails - RSPEC 不呈现 JSON.jbuilder 文件(缺少模板错误)

ruby-on-rails - 如何从数据库中检索选定的对象?对象变得多余

javascript - Button doesn't update in Ajax - Rails Tutorial 3 at §12.2.5

css - Bootstrap : Remove border and arrows for dropdown field

css - 是否可以覆盖网格系统以使用全宽

ruby-on-rails - Google OpenID 策略在 Rails 中不起作用

ruby-on-rails - stylesheet_link_tag 不生成链接

ruby-on-rails - 您如何覆盖 Rails has_one 关联的 getter 方法?

ruby-on-rails - 如何使用回形针将图像保存到各自的ID?

html - 打破文本行以提高响应能力