bulma/docs/documentation/customize/concepts.html
Davey Holler 96597e66ea Update concepts.html
Fixes a typo in the docs
2024-04-30 14:09:44 +01:00

190 lines
5.4 KiB
HTML

---
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 %}