2024-03-21 16:11:54 +00:00
---
title: Customize with Sass
layout: docs
theme: customize
doc-tab: customize
doc-subtab: with-sass
breadcrumb:
- home
- documentation
- customize
- customize-with-sass
---
{% capture content %}
Bulma is built using [Sass](https://sass-lang.com/). It uses **Sass variables** to define colors, sizes, spacing, and other aspects of the framework.
{% endcapture %}
{% include markdown.html content=content %}
{% include docs/elements/anchor.html name="Install the dependencies" %}
{% capture content %}
To customize Bulma with Sass, you first need to [install Sass](https://sass-lang.com/install/). The recommended approach is to use the `sass` npm package.
{% endcapture %}
{% include markdown.html content=content %}
{% capture content %}
{% highlight bash %}
npm install sass
npm install bulma
{% endhighlight %}
In your `package.json`, add one script to build Bulma, one to build and watch for changes:
{% highlight json %}
"build-bulma": "sass --load-path=node_modules my-bulma-project.scss my-bulma-project.css",
"start": "npm run build-bulma -- --watch"
{% endhighlight %}
Your whole `package.json` should look like this:
{% highlight json %}
{
"dependencies": {
"bulma": "^1.0.0",
"sass": "^1.72.0"
},
"scripts": {
"build-bulma": "sass --load-path=node_modules my-bulma-project.scss my-bulma-project.css",
"start": "npm run build-bulma -- --watch"
}
}
{% endhighlight %}
{% endcapture %}
{% include markdown.html content=content %}
{% include docs/elements/anchor.html name="Create your Sass file" %}
{% capture content %}
Next to your `package.json`, create a `my-bulma-project.scss` file.
To overwrite Bulma's Sass variables with your own value, write `@use` and the `with` keyword, which takes a Sass map:
{% highlight sass %}
// Set your brand colors
$purple: #8a4d76;
$pink: #fa7c91;
$brown: #757763;
$beige-light: #d0d1cd;
$beige-lighter: #eff0eb;
// Path to Bulma's sass folder
@use "bulma/sass" with (
$family-primary: '"Nunito", sans-serif',
$grey-dark: $brown,
$grey-light: $beige-light,
$primary: $purple,
$link: $pink,
$control-border-width: 2px,
$input-shadow: none
);
// Import the Google Font
@import url("https://fonts.googleapis.com/css?family=Nunito:400,700");
{% endhighlight %}
{% endcapture %}
{% include markdown.html content=content %}
{% capture content %}
Test out your setup by running the following command:
{% highlight bash %}
npm run build-bulma
{% endhighlight %}
You should see **2 files** appearing next to the other ones:
* `my-bulma-project.css`, your CSS output file
* `my-bulma-project.css.map`, an optional source map
{% endcapture %}
{% include markdown.html content=content %}
{% include docs/elements/anchor.html name="Add an HTML page" %}
{% capture content %}
To view your Bulma project come to life, create an `index.html` page with the following content:
{% endcapture %}
{% include markdown.html content=content %}
< div class = "bd-example bd-highlight-full" >
{% highlight html -%}
{%- include docs/snippets/custom-page.html -%}
{%- endhighlight %}
< / div >
{% include docs/elements/anchor.html name="Final result" %}
{% capture content %}
Your project folder should look like this:
{% endcapture %}
{% include markdown.html content=content %}
< table class = "table is-bordered" >
< tr >
< td >
< div class = "icon-text has-text-html" >
< span class = "icon" >
2024-03-23 19:25:04 +00:00
< i class = "fab fa-html5" > < / i >
2024-03-21 16:11:54 +00:00
< / span >
< / div >
< / td >
< td > < code > index.html< / code > < / td >
< / tr >
< tr >
< td >
< div class = "icon-text has-text-css" >
< span class = "icon" >
2024-03-23 19:25:04 +00:00
< i class = "fab fa-css3" > < / i >
2024-03-21 16:11:54 +00:00
< / span >
< / div >
< / td >
< td > < code > my-bulma-project.css< / code > < / td >
< / tr >
< tr >
< td >
< div class = "icon-text has-text-success" >
< span class = "icon" >
2024-03-23 19:25:04 +00:00
< i class = "fas fa-code" > < / i >
2024-03-21 16:11:54 +00:00
< / span >
< / div >
< / td >
< td > < code > my-bulma-project.css.map< / code > < / td >
< / tr >
< tr >
< td >
< div class = "icon-text has-text-sass" >
< span class = "icon" >
2024-03-23 19:25:04 +00:00
< i class = "fab fa-sass" > < / i >
2024-03-21 16:11:54 +00:00
< / span >
< / div >
< / td >
< td > < code > my-bulma-project.scss< / code > < / td >
< / tr >
< tr >
< td >
< div class = "icon-text has-text-js" >
< span class = "icon" >
2024-03-23 19:25:04 +00:00
< i class = "fab fa-js" > < / i >
2024-03-21 16:11:54 +00:00
< / span >
< / div >
< / td >
< td > < code > package.json< / code > < / td >
< / tr >
< / table >
< div class = "content" >
< p > And your final page will look like this:< / p >
< / div >
{% include
screenshot.html
path="screenshots/custom-page.png"
width=640
height=330
caption="Your final Bulma page"
%}