在Bootstrap 3中,主题主要由LESS决定,自定义CSS中的可能会覆盖项目
dist
文件中默认的内置的主题样式表,用户通过自定义各种颜色属性,可以完全重新设计Bootstrap 3的外观,而无需触摸核心文件。
青出于蓝胜于蓝,Bootstrap 4继承了上一个版本的方便易用思路,新的主题化习惯与旧版沿袭相同,却更加方便。
现在,主题由Sass变量,Sass maps和自定义CSS完成,虽然没有专门的主题样式表, 却可以启用内置主题来添加渐变,阴影等。
Sass定义
利用系统提供的Sass源文件、maps文件、变量、混合等。
尽可能避免修改Bootstrap的核心文件。对于Sass,这意味着创建您自己的样式表导入Bootstrap,以便您可以修改和扩展它。假设您已经下载了源文件或正在使用软件包管理器,那么文件结构如下所示:
your-project/
├── scss
│ └── custom.scss
└── node_modules/
└── bootstrap
├── js
└── scss
如果您已经下载了我们的源文件而没有使用包管理器,那么您需要手动设置类似于该结构的东西,将Bootstrap的源文件与您自己的文件分开.
在
custom.scss
中,您将导入Bootstrap的源Sass文件。 您有两个选择:包括所有Bootstrap,或选择您需要的部件。 我们鼓励后者,但要注意我们的组件有一些要求和依赖。 您还需要为我们的插件添加一些JavaScript。
使用该设置,您可以开始修改任何Sass变量和映射
custom.scss
。您还可以根据
//Optional
需要开始在该部分下添加Bootstrap的部分。我们建议使用
bootstrap.scss
文件中的完整导入堆栈作为起点。
变量缺省值
Bootstrap 4中的每个Sass变量都包含
!default
标签,这是允许您在自己的Sass中覆盖变量的默认值,而无需修改Bootstrap的源代码。根据需要复制和粘贴变量,修改其值,并删除
!default
标志。如果已经分配了一个变量,那么它将不会被Bootstrap中的默认值重新分配。
相同Sass文件中的变量覆盖可以在默认变量之前或之后。但是,当覆盖Sass文件时,您的覆盖必须在导入Bootstrap的Sass文件之前。
下面的例子,改变
<body>
中的
background-color
与
color
属性,并通过Nodejs NPM方法引导编译:
// Your variable overrides $body-bg: #000;
$body-color: #111;
// Bootstrap and its default variables
@import "node_modules/bootstrap/scss/bootstrap";
对Bootstrap中的任何变量进行必要的重复定义,包括下面的全局选项和子类选项。
Map定义与loops循环定义
Sass的第三个版本给我们带来了新的数据类型,叫做
map
。虽然你可以不知道这个名称,但在其他的语言中我们使用过map,通常就是关联数组。换句话说,Sass的
map
就是用关键名匹配对应值的一个数组(这里译者为大家提供了一个技术普及帖:
《使用Sass Maps 的技术普及知识》http://www.z01.com/help/web/3208.shtml
)
Bootstrap 4包括一些Sass map定义,使得更容易产生相关CSS的家庭。我们使用Sass map作为我们的颜色、网格、断点等关键了定义,这就如同Sass变量一样,所有Sass映射都包含
!default
标志,可以被覆盖并扩展。
下面是改变了一个例子
background-color
,并
color
为
body
进口,并通过NPM编译引导时:
// Your variable overrides
$body-bg: #000;
$body-color: #111;
// Bootstrap and its default variables
@import "../node_modules/bootstrap/scss/bootstrap";
修改 map
例如,要修改我们
$theme-colors
map的现有颜色,请将以下内容添加到您的自定义Sass文件中:
$theme-colors: (
"primary": #0074d9,
"danger": #ff4136
添加map
添加一个新的颜色$theme-colors
、新的键和值:
$theme-colors: (
"custom-color": #900
移除map
要从$theme-colors
任何其他画布删除颜色,请使用map-remove: