Css 在多个SASS文件中使用引导会导致类重写问题。什么';什么是正确的SASS/引导结构?

Css 在多个SASS文件中使用引导会导致类重写问题。什么';什么是正确的SASS/引导结构?,css,twitter-bootstrap,sass,css-preprocessor,Css,Twitter Bootstrap,Sass,Css Preprocessor,我搜索了一段时间,但没有找到任何类似的问题,我非常惊讶 我正在使用SASS和Bootstrap安装Drupal。 我有一个简单的文件结构: base.scss-提供引导和变量导入 style.scss-导入项目的模块: style.scss @import "base"; @import "util"; @import "node"; @import "project"; @import "breadcrumb"; @import "menu"; 当然,所有这些.scs都存在并位于同一

我搜索了一段时间,但没有找到任何类似的问题,我非常惊讶

我正在使用SASS和Bootstrap安装Drupal。 我有一个简单的文件结构:

  • base.scss-提供引导和变量导入
  • style.scss-导入项目的模块:
style.scss

@import "base"; 
@import "util";

@import "node";
@import "project";
@import "breadcrumb";
@import "menu";
当然,所有这些.scs都存在并位于同一文件夹中

我的目标

  • 我想在所有单独的文件中使用引导:节点、项目、面包屑和菜单,但只包含一次引导
问题

  • 如果我想
    @extend.breadcrumb导入“base”,找不到选择器.breadcrumb
    
  • 如果我
    导入“base”
    在这n个单独的文件中,引导选择器包含n次。这会导致令人难以置信的混乱,并使对引导选择器的覆盖变得复杂。例如,我想更改引导的
    .navbar切换。如果我在
    node.scss
    中执行此操作,它将被
    project.scss
    中导入的默认引导选择器覆盖
  • 问题

    • 是否有一种正确的方法只包含一次引导并在中使用它 其他几个文件
    • 我真的不明白为什么会存在问题1。SASS文件说:
    Sass将获取您要导入的文件,并将其与您要导入的文件组合,以便您可以向web浏览器提供单个CSS文件

    • 因此,如果我使用上面提到的导入引导而不在模块中导入引导的
      style.scss
      ,为什么编译器无法解析任何引导类?对我来说,这听起来不像是合并进口。还是我错过了一些最基本的东西
    提前谢谢

    base.scss

    /*!
     * Bootstrap v3.3.7 (http://getbootstrap.com)
     * Copyright 2011-2016 Twitter, Inc.
     * Licensed under MIT (https://github.com/twbs/../../bootstrap/stylesheets/bootstrap/blob/master/LICENSE)
     */
    
    // Core variables and mixins
    
    @import "variables";
    @import "../../bootstrap/stylesheets/bootstrap/mixins";
    
    // Reset and dependencies
    @import "../../bootstrap/stylesheets/bootstrap/normalize";
    @import "../../bootstrap/stylesheets/bootstrap/print";
    @import "../../bootstrap/stylesheets/bootstrap/glyphicons";
    
    // Core CSS
    @import "../../bootstrap/stylesheets/bootstrap/scaffolding";
    @import "../../bootstrap/stylesheets/bootstrap/type";
    @import "../../bootstrap/stylesheets/bootstrap/code";
    @import "../../bootstrap/stylesheets/bootstrap/grid";
    @import "../../bootstrap/stylesheets/bootstrap/tables";
    @import "../../bootstrap/stylesheets/bootstrap/forms";
    @import "../../bootstrap/stylesheets/bootstrap/buttons";
    
    // Components
    @import "../../bootstrap/stylesheets/bootstrap/component-animations";
    @import "../../bootstrap/stylesheets/bootstrap/dropdowns";
    @import "../../bootstrap/stylesheets/bootstrap/button-groups";
    @import "../../bootstrap/stylesheets/bootstrap/input-groups";
    @import "../../bootstrap/stylesheets/bootstrap/navs";
    @import "../../bootstrap/stylesheets/bootstrap/navbar";
    @import "../../bootstrap/stylesheets/bootstrap/breadcrumbs";
    // [...] other components
    
    // Components w/ JavaScript
    @import "../../bootstrap/stylesheets/bootstrap/modals";
    @import "../../bootstrap/stylesheets/bootstrap/tooltip";
    // [...]
    
    // Utility classes
    @import "../../bootstrap/stylesheets/bootstrap/utilities";
    @import "../../bootstrap/stylesheets/bootstrap/responsive-utilities";
    
    你用的是Bootstrap主题中的哪个

    据我所知,他们推荐您的style.scs如下:

    // Default variables.
    @import 'default-variables';
    
    // Bootstrap Framework.
    @import '../bootstrap/assets/stylesheets/bootstrap';
    
    // Base-theme overrides.
    @import 'overrides';
    
    所以我的猜测是,您必须先将变量和引导文件导入style.scs,然后再导入其他文件

    然后,您可以添加/编辑变量和覆盖,还应该能够导入其他文件,如节点、菜单等。他们都应该能够访问引导选择器和变量


    如果我误解了你的问题,我很抱歉。我个人使用的是一个较旧的带有引导的设置

    我使用Drupal 8引导程序基本主题的“较少”初学者工具包,如中所述。我的引导文件和变量在base.scss中导入,base.scss由style.scss导入,后者导入所有模块。这些在没有导入语句的情况下不起作用。我还尝试在base.scss中导入一个新的“test.scss”(test.scss不导入base.scss)。结果:
    未找到选择器“.breadcrumb”。
    在style.scss中,可以使用引导变量和选择器。只有导入的文件没有访问权限。嗯,听起来你的base.scss有问题。您是否尝试过将引导和变量直接导入style.scs而不使用基本文件,并检查变量和选择器是否在模块中工作?或者检查变量和选择器是否在base.scss中工作?还有,有什么理由不使用SASS初学者工具包用于D8吗?我不知道为什么我选择盲目地遵循教程中的说明,并实际复制较少的初学者工具包。。。但我不认为这是一个大问题,因为文件和概念应该几乎相同,因为我当前的设置是基于源文件构建的。如果您重新阅读我上面的“test.scss”场景,我已经尝试了您的建议,直接导入到style中(好吧,我在base.scss中导入了另一个模块,基本上是相同的),不幸的是没有成功。我将在帖子中包括base.scss。