--- title: Bulma Customization Concepts layout: docs theme: customize doc-tab: customize doc-subtab: concepts breadcrumb: - home - documentation - customize - customize-concepts --- {% capture markdown %} Bulma is a **highly customizable CSS framework**. From colors to typography, spacing and sizes, forms and layouts, all parts of Bulma can be customized by the user. Bulma's styles and variables are defined at several levels: * Global Sass variables * Component Sass variables * Global CSS variables * Component CSS variables * Helper classes All Bulma components are styled using **Sass variables** and **CSS Variables** (which are also called CSS custom properties). Read more about them: * [on the Sass website](https://sass-lang.com/documentation/variables/) * [on the MDN Reference](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) {% endcapture %} {% include markdown.html content=markdown %} {% include docs/elements/anchor.html name="Global Sass Variables" %} {% capture markdown %} Bulma uses Sass variables globally defined in 2 files located in the `utilities` folder: * `initial-variables.scss` where you define variables by literal value * **colors** like `$blue: hsl(229, 53%, 53%)` * **font sizes** like `$size-1: 3rem` * **dimensions** like `$block-spacing: 1.5rem` * **breakpoints** like `$tablet: 769px` * **other values** like `$easing: ease-out` or `$radius-large: 0.75rem` * `derived-variables.scss` where variables are calculated from the values set in the previous file * **primary colors**: * `$primary` * `$link` * `$success` * `$info` * `$warning` * `$dark` * **utility colors**: * `$background` * `$border` * `$code` and `$pre` * `$shadow-color` * **typography**: * `$family-primary` * `$family-secondary` * `$family-code` * `$size-small` * `$size-normal` * `$size-medium` * `$size-large` * color maps: * `$colors` * `$shades` * `$sizes` {% endcapture %} {% include markdown.html content=markdown %} {% include docs/elements/anchor.html name="Component Sass variables" %} {% capture markdown %} All Bulma components define its own Sass variables. For example, `components/breadcrumb.scss` define the following: {% endcapture %} {% include markdown.html content=markdown %} {% include docs/components/variables.html tab="components" subtab="breadcrumb" hide_css_vars=true %} {% include docs/elements/anchor.html name="Global CSS Variables" %} {% capture markdown %} Bulma uses global CSS variables defined at the `:root` level. They are all prefixed with `bulma-`: {% endcapture %} {% include markdown.html content=markdown %} {% highlight css %} :root { /* Colors and Lightness values */ --bulma-scheme-h: 221; --bulma-scheme-s: 14%; --bulma-light-l: 90%; --bulma-light-invert-l: 20%; --bulma-dark-l: 20%; --bulma-dark-invert-l: 90%; --bulma-soft-l: 90%; --bulma-bold-l: 20%; --bulma-soft-invert-l: 20%; --bulma-bold-invert-l: 90%; /* etc. */ /* Color Palettes */ --bulma-primary: hsla(var(--bulma-primary-h), var(--bulma-primary-s), var(--bulma-primary-l), 1); --bulma-primary-base: hsla(var(--bulma-primary-h), var(--bulma-primary-s), var(--bulma-primary-l), 1); --bulma-primary-rgb: 0, 209, 178; --bulma-primary-h: 171deg; --bulma-primary-s: 100%; --bulma-primary-l: 41%; --bulma-primary-00-l: 1%; --bulma-primary-05-l: 6%; --bulma-primary-10-l: 11%; --bulma-primary-15-l: 16%; --bulma-primary-20-l: 21%; /* etc. */ /* Typography */ --bulma-family-primary: Inter, SF Pro, Segoe UI, Roboto, Oxygen, Ubuntu, Helvetica Neue, Helvetica, Arial, sans-serif; --bulma-family-secondary: Inter, SF Pro, Segoe UI, Roboto, Oxygen, Ubuntu, Helvetica Neue, Helvetica, Arial, sans-serif; --bulma-family-code: Inconsolata, Hack, SF Mono, Roboto Mono, Source Code Pro, Ubuntu Mono, monospace; --bulma-size-small: 0.75rem; --bulma-size-normal: 1rem; --bulma-size-medium: 1.25rem; --bulma-size-large: 1.5rem; /* etc. */ } {% endhighlight %} {% capture markdown %} You can **overwrite** them simply by setting a new value at the same scope (or even a more specific one): {% endcapture %} {% include markdown.html content=markdown %} {% highlight css %} :root { /* Set new values */ --bulma-scheme-h: 35; --bulma-scheme-s: 20%; } {% endhighlight %} {% include docs/elements/anchor.html name="Components CSS Variables" %} {% capture markdown %} Bulma is also styled at the **component** level. For example, here is how the `.title` element is styled: {% endcapture %} {% include markdown.html content=markdown %} {% highlight css %} .title { --bulma-title-color: var(--bulma-text-strong); --bulma-title-family: false; --bulma-title-size: var(--bulma-size-3); --bulma-title-weight: var(--bulma-weight-extrabold); --bulma-title-line-height: 1.125; --bulma-title-strong-color: inherit; --bulma-title-strong-weight: inherit; --bulma-title-sub-size: 0.75em; --bulma-title-sup-size: 0.75em; } .title { color: var(--bulma-title-color); font-size: var(--bulma-title-size); font-weight: var(--bulma-title-weight); line-height: var(--bulma-title-line-height); } {% endhighlight %} {% capture markdown %} You can overwrite this simply by setting new values under the same scope: {% endcapture %} {% include markdown.html content=markdown %} {% highlight css %} .title { --bulma-title-color: #fff; --bulma-title-line-height: 1.6; } {% endhighlight %}