我如何在 angular-cli 中使用 bootstrap mixins
How do I use bootstrap mixins in angular-cli
我尝试在 styles.scss 中使用 mixin,但它说它未定义。
我试过:
- 在styles.scss
中使用
@include media-breakpoint-up(sm) {
.some-class {
display: block;
}
}
结果:
@include media-breakpoint-up(sm) {
^
No mixin named media-breakpoint-up
再次导入 bootstrap:
@import "../node_modules/bootstrap/scss/bootstrap.scss";
现在可以使用了,但是如果我查看 styles.bundle.js,bootstrap 会被包含两次。 Bootstrap 已经包含在 angular-cli.json.
中
如果您正在使用 sass,您可以直接将 bootstrap 导入到您的 styles.scss,无需将其添加到 angular-cli.json 文件.
更多信息 ->
https://github.com/angular/angular-cli/wiki/stories-include-bootstrap
您实际上只需要 mixins 文件和变量文件,而不是再次导入所有 bootstrap:
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
这些文件中没有实际的 CSS - 只有 SCSS 个变量和混入。
我最近提交了一些方便的额外 mixins 包。放心使用吧https://github.com/Omi0/boostrap-mixins
有两种方法可以做到这一点。基本上,这两种方式是相同的,它们只是语法不同。因此,在 SCSS 文件的顶部,使用以下行:
@import "~bootstrap/scss/bootstrap-grid.scss";
或
@import "../../node_modules/bootstrap/scss/bootstrap-grid.scss";
这是一个完整的例子:
main.scss
@import "~bootstrap/scss/bootstrap-grid.scss
.test {
background-color: yellow;
}
@include media-breakpoint-up(md) {
.test {
background-color: red;
}
}
HTML代码:
<div class="test">
This div should have yellow background on mobile and red background in medium devices and up.
</div>
注意: 这假设您在 package.json 文件的依赖项列表中已经有 Bootstrap .如果没有,那么您可以在其中添加以下行,您可以根据需要更改 Bootstrap 版本。
"bootstrap": "4.1.3"
我在他们自己的文件夹中的所有组件都遇到了同样的问题
projects/<prj>/src/app/navbar/navbar.scss
:
我已经修复了临时手动添加
@import '~bootstrap/scss/functions';
@import '~bootstrap/scss/variables';
@import '~bootstrap/scss/mixins';
我确定那不漂亮但解决它...
我的包版本低于
Angular CLI: 7.0.6
Node: 9.10.1
OS: darwin x64
Angular: 7.0.4
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.10.6
@angular-devkit/build-angular 0.10.6
@angular-devkit/build-ng-packagr 0.10.7
@angular-devkit/build-optimizer 0.10.6
@angular-devkit/build-webpack 0.10.6
@angular-devkit/core 7.0.6
@angular-devkit/schematics 7.0.6
@angular/cli 7.0.6
@angular/fire 5.1.0
@ngtools/json-schema 1.1.0
@ngtools/webpack 7.0.6
@schematics/angular 7.0.6
@schematics/update 0.10.6
ng-packagr 4.4.5
rxjs 6.3.3
typescript 3.1.6
webpack 4.19.1
您可以通过以下方式导入 mixins 以在 scss 文件中使用:
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
此外,如果您尝试仅导入 mixin,可能会出错。
我尝试在 styles.scss 中使用 mixin,但它说它未定义。 我试过:
- 在styles.scss 中使用
@include media-breakpoint-up(sm) {
.some-class {
display: block;
}
}
结果:
@include media-breakpoint-up(sm) {
^
No mixin named media-breakpoint-up
再次导入 bootstrap:
@import "../node_modules/bootstrap/scss/bootstrap.scss";
现在可以使用了,但是如果我查看 styles.bundle.js,bootstrap 会被包含两次。 Bootstrap 已经包含在 angular-cli.json.
中如果您正在使用 sass,您可以直接将 bootstrap 导入到您的 styles.scss,无需将其添加到 angular-cli.json 文件.
更多信息 -> https://github.com/angular/angular-cli/wiki/stories-include-bootstrap
您实际上只需要 mixins 文件和变量文件,而不是再次导入所有 bootstrap:
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
这些文件中没有实际的 CSS - 只有 SCSS 个变量和混入。
我最近提交了一些方便的额外 mixins 包。放心使用吧https://github.com/Omi0/boostrap-mixins
有两种方法可以做到这一点。基本上,这两种方式是相同的,它们只是语法不同。因此,在 SCSS 文件的顶部,使用以下行:
@import "~bootstrap/scss/bootstrap-grid.scss";
或
@import "../../node_modules/bootstrap/scss/bootstrap-grid.scss";
这是一个完整的例子:
main.scss
@import "~bootstrap/scss/bootstrap-grid.scss
.test {
background-color: yellow;
}
@include media-breakpoint-up(md) {
.test {
background-color: red;
}
}
HTML代码:
<div class="test">
This div should have yellow background on mobile and red background in medium devices and up.
</div>
注意: 这假设您在 package.json 文件的依赖项列表中已经有 Bootstrap .如果没有,那么您可以在其中添加以下行,您可以根据需要更改 Bootstrap 版本。
"bootstrap": "4.1.3"
我在他们自己的文件夹中的所有组件都遇到了同样的问题
projects/<prj>/src/app/navbar/navbar.scss
:
我已经修复了临时手动添加
@import '~bootstrap/scss/functions';
@import '~bootstrap/scss/variables';
@import '~bootstrap/scss/mixins';
我确定那不漂亮但解决它...
我的包版本低于
Angular CLI: 7.0.6
Node: 9.10.1
OS: darwin x64
Angular: 7.0.4
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.10.6
@angular-devkit/build-angular 0.10.6
@angular-devkit/build-ng-packagr 0.10.7
@angular-devkit/build-optimizer 0.10.6
@angular-devkit/build-webpack 0.10.6
@angular-devkit/core 7.0.6
@angular-devkit/schematics 7.0.6
@angular/cli 7.0.6
@angular/fire 5.1.0
@ngtools/json-schema 1.1.0
@ngtools/webpack 7.0.6
@schematics/angular 7.0.6
@schematics/update 0.10.6
ng-packagr 4.4.5
rxjs 6.3.3
typescript 3.1.6
webpack 4.19.1
您可以通过以下方式导入 mixins 以在 scss 文件中使用:
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";
@import "../node_modules/bootstrap/scss/mixins";
此外,如果您尝试仅导入 mixin,可能会出错。