首页 文章

如何使Bootstrap sass变量对另一个导入的sass文件可见?

提问于
浏览
1

我在Rails应用程序中使用 bootstrap-sass . 到目前为止,一切都运行良好,但我刚刚尝试导入另一个使用bootstrap变量的第三方sass文件,它无法看到它们 .

在我的 application.css.scss

*= require bootstrap_local

bootstrap_local.css.scss

@import "bootstrap";
@import "bootstrap-social";

当我进行页面访问时,我收到Rails错误

Undefined variable: "$line-height-computed".
(in .../app/assets/stylesheets/bootstrap-social.scss:11)

bootstrap-social.scss 所需的变量是在先前导入的 bootstrap 文件中定义的(实际上它是在它包含的部分 bootstrap/variables 中定义的) .

据我所知,这应该有效,因为 bootstrap_local 是必需的,这意味着它中的所有内容在一个范围内编译在一起,因此导入 bootstrap_local 的所有内容都被视为一个大文件 . 也许我错了?

如果我将 @import "bootstrap"; 扔进 bootstrap-social.scs 那么它运行正常 . 但我不应该这样做,所以我做错了或者我的设置有一些错误配置 .

What do I need to do to fix this?

宝石:

  • bootstrap-sass-3.1.1.1

  • sass-rails-4.0.3

系统:

  • Rails 4.0.1

  • ruby 2.0.0p247(2013-06-27修订版41674)[x86_64-linux]

Bootstrap Social是一组基于Bootstrap和Font Awesome的纯CSS制作的社交登录按钮 . )

1 回答

  • 0

    可以通过将 application.css.scss 清单更改为使用 import 而不是 require 来解决问题中描述的问题:

    @import "bootstrap_local";
    

    还需要从清单中删除任何 require_tree . ,因为否则它将需要相同的 bootstrap_local 文件,因为它位于其路径中 .

    经过反思,清单中没有 require tree . 可能是明智的,因为它可以防止包含不需要的文件 . 我只有它在那里,因为它默认存在于一个新的Rails项目中(同样适用于 require_self ;更清楚的是不将它放在清单中) .

    在参考有关使用下划线为文件添加前缀的建议时,当您不需要文件(如问题中的 bootstrap-social )编译成单独的CSS文件时,这是一件好事 . 所以,我最终将其重命名为 _bootstrap-social.scss .

相关问题