Bulma layers a minimal CSS reset, a flexbox column system, component rules, and helper utilities—all delivered as a single compiled stylesheet with no runtime JavaScript from the framework itself.
What loads in the browser
- CSS bundle — columns, elements (button, input), components (navbar, hero), and helpers (spacing, colors, visibility)
- Your markup — semantic HTML plus Bulma class names; modifiers stack on base classes
- Optional JS — only when you add interactivity (navbar burger toggle, modals); not part of Bulma’s core
The playground uses a CDN link for convenience. Production apps often install via npm, import only needed Sass partials, and customize variables before compile—similar to theming Bootstrap from source.
Modifier vocabulary
is-*— state or variant on the element (is-primary,is-half,is-hidden-mobile)has-*— something the element contains or displays (has-text-centered,has-background-info)
Important interview questions and answers
- Q: Why is Bulma “CSS-only”?
A: The framework ships styling without bundling JavaScript plugins; interactive behavior is intentionally left to the developer. - Q: CDN vs npm?
A: CDN is fine for prototypes and lessons; npm + Sass gives variable overrides, partial imports, and version pinning in CI. - Q: How does Bulma 1.0 differ from 0.9?
A: Bulma 1.x modernizes the codebase, improves CSS custom properties support, and refines the modifier system while keeping the familiar class API.
Self-check
- What does Bulma not provide that Bootstrap’s JS bundle does?
- When might a production app compile Bulma from Sass instead of linking CDN CSS?
Interview prep
- What do is-* classes represent?
State/style modifiers on components—e.g.
is-primaryon a button oris-activeon a menu item.