Bootstrap Angular CLI 中的 4
Bootstrap 4 in Angular CLI
我正在尝试在我的 Angular 4 CLI 项目中使用 Bootstrap 4 scss 文件进行设置。
遵循指南 and here,我已经设置了angular-cli.json(designsystem.scss是我的主要scss文件):
"styles": [
"sass/designsystem/designsystem.scss",
"../node_modules/prismjs/themes/prism.css",
"styles.scss"
],
然后,在该文件中:
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
并且在“_variables.scss”中我粘贴了默认Bootstrap 4“_variables.scss”的内容并删除了所有!default
s.
到目前为止,我没有覆盖任何内容。但是 CLI 一直卡在 "variables" 文件上,寻找 mixins,例如
./src/sass/designsystem/designsystem.scss
Module build failed: ModuleBuildError: Module build failed:
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
^
No mixin named -assert-ascending
Backtrace:
src/sass/designsystem/_variables.scss:190
如果我注释掉我的 @import 'variables';
,基础 bootstrap scss 处理和加载没有错误。
那么,如何创建 _variables.scss
的自定义版本?
更新:
即使我注释掉了 mixin,构建也会在所有颜色函数上失败:
$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color("primary"), .25);
^
Argument `$color` of `rgba($color, $alpha)` must be a color
看来我还需要 import Bootstrap functions before variables:
@import '../../../node_modules/bootstrap/scss/functions';
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
几个变量使用函数,特别是theme-color()
您不必像 bootstrap.scss 中那样导入变量。只需执行以下操作,您就可以开始了:
// overriding bootstraps browser default to 14px instead of 16px
$font-size-base: .875rem;
$font-size-lg: 1rem;
$font-size-sm: .75rem;
@import '../../../../node_modules/bootstrap/scss/bootstrap';
.font-lg{
font-size:$font-size-lg;
}
.font-md {
font-size: $font-size-base;
}
.font-sm {
font-size: $font-size-sm;
}
我相信您遇到了问题,因为您在自定义 variables.scss 文件中使用了尚未声明的函数和混入。
您可以通过覆盖变量而不是派生文件的其余部分来解决这些问题。
使用Bootstrap@4.0.0Beta:
$white: #fff;
$gray-100: #f8f9fa;
$gray-200: #e9ecef;
$gray-300: #dee2e6;
$gray-400: #ced4da;
$gray-500: #adb5bd;
$gray-600: #868e96;
$gray-700: #495057;
$gray-800: #343a40;
$gray-900: #212529;
$black: #000;
$grays: (
100: $gray-100,
200: $gray-200,
300: $gray-300,
400: $gray-400,
500: $gray-500,
600: $gray-600,
700: $gray-700,
800: $gray-800,
900: $gray-900
);
$blue: #007bff;
$indigo: #6610f2;
$purple: #6f42c1;
$pink: #e83e8c;
$red: #dc3545;
$orange: #fd7e14;
$yellow: #ffc107;
$green: #28a745;
$teal: #20c997;
$cyan: #17a2b8;
$colors: (
blue: darkblue, //change a default color
indigo: $indigo,
purple: $purple,
pink: $pink,
red: $red,
orange: $orange,
yellow: $yellow,
green: $green,
teal: $teal,
cyan: $cyan,
white: $white,
gray: $gray-600,
gray-dark: $gray-800
);
$theme-colors: (
smurf: #0fa8d6, //add your own custom theme
primary: $blue,
secondary: $gray-600,
success: $green,
info: $cyan,
warning: $yellow,
danger: $red,
light: $gray-100,
dark: $gray-800
);
请注意,这些只是变量,仅此而已。现在只需在 bootstrap 之前导入 variables.scss 就可以了:
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
在 sass/designsystem/designsystem.scss 文件中的 _variables 导入之前添加这些导入。
@import "../../node_modules/bootstrap/scss/functions";
@import "../../node_modules/bootstrap/scss/bootstrap";
我正在尝试在我的 Angular 4 CLI 项目中使用 Bootstrap 4 scss 文件进行设置。
遵循指南
"styles": [
"sass/designsystem/designsystem.scss",
"../node_modules/prismjs/themes/prism.css",
"styles.scss"
],
然后,在该文件中:
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
并且在“_variables.scss”中我粘贴了默认Bootstrap 4“_variables.scss”的内容并删除了所有!default
s.
到目前为止,我没有覆盖任何内容。但是 CLI 一直卡在 "variables" 文件上,寻找 mixins,例如
./src/sass/designsystem/designsystem.scss
Module build failed: ModuleBuildError: Module build failed:
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
^
No mixin named -assert-ascending
Backtrace:
src/sass/designsystem/_variables.scss:190
如果我注释掉我的 @import 'variables';
,基础 bootstrap scss 处理和加载没有错误。
那么,如何创建 _variables.scss
的自定义版本?
更新:
即使我注释掉了 mixin,构建也会在所有颜色函数上失败:
$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color("primary"), .25);
^
Argument `$color` of `rgba($color, $alpha)` must be a color
看来我还需要 import Bootstrap functions before variables:
@import '../../../node_modules/bootstrap/scss/functions';
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
几个变量使用函数,特别是theme-color()
您不必像 bootstrap.scss 中那样导入变量。只需执行以下操作,您就可以开始了:
// overriding bootstraps browser default to 14px instead of 16px
$font-size-base: .875rem;
$font-size-lg: 1rem;
$font-size-sm: .75rem;
@import '../../../../node_modules/bootstrap/scss/bootstrap';
.font-lg{
font-size:$font-size-lg;
}
.font-md {
font-size: $font-size-base;
}
.font-sm {
font-size: $font-size-sm;
}
我相信您遇到了问题,因为您在自定义 variables.scss 文件中使用了尚未声明的函数和混入。
您可以通过覆盖变量而不是派生文件的其余部分来解决这些问题。
使用Bootstrap@4.0.0Beta:
$white: #fff;
$gray-100: #f8f9fa;
$gray-200: #e9ecef;
$gray-300: #dee2e6;
$gray-400: #ced4da;
$gray-500: #adb5bd;
$gray-600: #868e96;
$gray-700: #495057;
$gray-800: #343a40;
$gray-900: #212529;
$black: #000;
$grays: (
100: $gray-100,
200: $gray-200,
300: $gray-300,
400: $gray-400,
500: $gray-500,
600: $gray-600,
700: $gray-700,
800: $gray-800,
900: $gray-900
);
$blue: #007bff;
$indigo: #6610f2;
$purple: #6f42c1;
$pink: #e83e8c;
$red: #dc3545;
$orange: #fd7e14;
$yellow: #ffc107;
$green: #28a745;
$teal: #20c997;
$cyan: #17a2b8;
$colors: (
blue: darkblue, //change a default color
indigo: $indigo,
purple: $purple,
pink: $pink,
red: $red,
orange: $orange,
yellow: $yellow,
green: $green,
teal: $teal,
cyan: $cyan,
white: $white,
gray: $gray-600,
gray-dark: $gray-800
);
$theme-colors: (
smurf: #0fa8d6, //add your own custom theme
primary: $blue,
secondary: $gray-600,
success: $green,
info: $cyan,
warning: $yellow,
danger: $red,
light: $gray-100,
dark: $gray-800
);
请注意,这些只是变量,仅此而已。现在只需在 bootstrap 之前导入 variables.scss 就可以了:
@import 'variables';
@import '../../node_modules/bootstrap/scss/bootstrap';
在 sass/designsystem/designsystem.scss 文件中的 _variables 导入之前添加这些导入。
@import "../../node_modules/bootstrap/scss/functions";
@import "../../node_modules/bootstrap/scss/bootstrap";