---json
{
"canonical": ":custom:bootstrap",
"page_id": "0zxd4ai3p6z98m0i6xj9c"
}
---
====== ComboStrap Styling - How to create and add your own Bootstrap stylesheet ======
===== About =====
This article shows you how to create and install your own custom [[:docs:theme:bootstrap|Bootstrap Stylesheet]] to fit your [[docs:styling:styling|styling]] needs.
* This article was written for Bootstrap 4 but the steps should be relatively the same for Bootstrap 5
* This was the steps taken to create the [[release:deprecated:dynamic_grid|16 grid Stylesheet]].
* If you want to modify the styling once, you can also do it via [[docs:styling:styling#attributes|attributes]]
* You can also customize since Bootstrap 5, the style via [[:docs:theme:css-variable|css variable]]
===== Prerequisites =====
* Install [[https://nodejs.org/en/download/|Node]]
* Insatll [[https://git-scm.com/downloads|Git]]
===== Steps =====
==== Get a version ====
* Get Bootstrap
git clone https://github.com/twbs/bootstrap.git
* Get the last [[docs:theme:bootstrap#version|Combostrap Bootstrap version]]. Example for Bootstrap version 4.5.0
cd bootstrap
git checkout -b version4.5.0 v4.5.0
==== Install ====
* Install the package dependencies
npm install
==== Modify the SCSS Variable file ====
You modify a theme by giving your own sass variable in the file ''scss/_variables.scss''
The naming convention is ''$name-state-property-modifier'' where:
* ''name'' is the component name corresponding to the given class name (e.g .alert)
* ''state'' is the pseudo-class used to define a special state of an element (e.g: hover, active, checked etc)
* ''property'' is the given CSS property in order to achieve the results you need (e.g: color, background, display)
* ''modifier'' is used to define additional information for the current property, like sizes, axis (e.g alert-sm, alert-padding-y)
Every Sass variable in Bootstrap 4 includes the ''!default'' flag allowing you to override the variable’s default value in your own Sass.
Example with a [[release:deprecated:dynamic_grid|grid of 16 columns with a max width of 1280px]]
$grid-columns: 16 !default;
$container-max-widths: (
sm: 540px,
md: 720px,
lg: 960px,
xl: 1280px
) !default;
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1280px
) !default;
Optionally for a better [[kb>color:contrast|contrast]], you can change the blue color.
$blue: #075ebb !default;
==== Compile ====
npm run dist
# or just for css
npm run css
==== Grab the stylesheet ====
In the sub-directory ''dist\css'', you can find the files:
* ''bootstrap.min.css''
* ''bootstrap.min.css.map''
==== Calculate the integrity ====
Optional but recommended
The [[kb>html:integrity|integrity field]] permits to control that the stylesheet file was not tempered during the network transit.
# go to the bootstrap source code directory
cd bootstrap/dist/css
# generate a sha384
openssl dgst -sha384 -binary bootstrap.min.css | openssl base64 -A
Output:
6YMUsimvBMWMU6VPmQwCKP28RrKPSaSaD48Hfabk1yxb5zQZ21XDRL/vljin9SZ3
Your integrity value is:
sha384-6YMUsimvBMWMU6VPmQwCKP28RrKPSaSaD48Hfabk1yxb5zQZ21XDRL/vljin9SZ3
==== Install your new stylesheet ====
To install your new stylesheet, you need to:
* copy the [[#Grab the stylesheet|custom style sheet and its map file]] to the bootstrap folder
* [[#define the custom stylesheet|define it]]
* and [[#change the bootstrapStylesheet configuration]]
=== Copy the custom style sheet ===
The bootstrap folders are organised by ''bootstrap versions''
dokuwiki/lib/combo/resources/library/bootstrap/${version}
Example:
* ''dokuwiki/lib/combo/resources/library/bootstrap/4.5.0'' for the version ''4.5.0''
* ''dokuwiki/lib/combo/resources/library/bootstrap/4.4.1'' for the version ''4.4.1''
[[#Grab the stylesheet|Take the custom stylesheet ''bootstrap.min.cs'' created]] an copy it to the bootstrap folder. In this example in ''dokuwiki/lib/combo/resources/library/bootstrap/4.5.0''
=== Define the custom stylesheet ===
''combo'' uses a json file system to manage the stylesheet available.
* Create the file ''bootstrapLocalCss.json'' in the bootstrap folder. You can also copy the ''bootstrapCustomCss.json''
The ''bootstrapLocalCss.json'' is a file that is not part of the strap distribution and will not be overwritten between upgrade. This is why you need to create a new file. It would have been possible to modify the file ''bootstrapCustomCss.json'' but as this file is overwritten for each upgrade, you would have lost your custom configuration
Example:
{
"4.5.0": {
"my-custom-bootstrap": {
"file": "bootstrap.custom.min.css",
"integrity": "sha384-6YMUsimvBMWMU6VPmQwCKP28RrKPSaSaD48Hfabk1yxb5zQZ21XDRL/vljin9SZ3"
}
}
}
=== Change the bootstrapStylesheet configuration ===
The last step is to [[:howto:stylesheet-bootstrap|change the stylesheet configuration]].
===== Documentation =====
* https://getbootstrap.com/docs/4.4/getting-started/theming/