Skip to main content
The message component displays colored notification boxes with optional headers and close buttons.

Basic Message

A simple message with a body:
<article class="message">
  <div class="message-body">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <strong>Pellentesque risus mi</strong>, tempus quis placerat ut, porta nec nulla.
  </div>
</article>

Message with Header

Add a header to your message:
<article class="message">
  <div class="message-header">
    <p>Info</p>
    <button class="delete" aria-label="delete"></button>
  </div>
  <div class="message-body">
    This is an informational message with a header and close button.
  </div>
</article>

Structure

The message component consists of:
  • message - Main container
    • message-header - Optional header section
      • Title text
      • delete - Close button (optional)
    • message-body - Content section

Colors

Messages support all color variants:

Primary

<article class="message is-primary">
  <div class="message-header">
    <p>Primary</p>
    <button class="delete"></button>
  </div>
  <div class="message-body">
    This is a primary message.
  </div>
</article>
<article class="message is-link">
  <div class="message-header">
    <p>Link</p>
  </div>
  <div class="message-body">
    This is a link-colored message.
  </div>
</article>

Info

<article class="message is-info">
  <div class="message-header">
    <p>Info</p>
  </div>
  <div class="message-body">
    This is an informational message.
  </div>
</article>

Success

<article class="message is-success">
  <div class="message-header">
    <p>Success</p>
  </div>
  <div class="message-body">
    This is a success message.
  </div>
</article>

Warning

<article class="message is-warning">
  <div class="message-header">
    <p>Warning</p>
  </div>
  <div class="message-body">
    This is a warning message.
  </div>
</article>

Danger

<article class="message is-danger">
  <div class="message-header">
    <p>Danger</p>
  </div>
  <div class="message-body">
    This is a danger/error message.
  </div>
</article>

Sizes

Messages support three size modifiers:
<!-- Small -->
<article class="message is-small">
  <div class="message-body">
    This is a small message.
  </div>
</article>

<!-- Medium -->
<article class="message is-medium">
  <div class="message-body">
    This is a medium message.
  </div>
</article>

<!-- Large -->
<article class="message is-large">
  <div class="message-body">
    This is a large message.
  </div>
</article>

Body Only

Messages without a header:
<article class="message is-info">
  <div class="message-body">
    This message has no header, just a colored body.
  </div>
</article>

With Delete Button

Add a close button to dismiss messages:
<article class="message is-success">
  <div class="message-header">
    <p>Operation Successful</p>
    <button class="delete" aria-label="delete"></button>
  </div>
  <div class="message-body">
    Your changes have been saved successfully.
  </div>
</article>
The delete button requires JavaScript to actually remove the message from the DOM.

Rich Content

Message bodies can contain any HTML:
<article class="message is-info">
  <div class="message-header">
    <p>Installation Instructions</p>
  </div>
  <div class="message-body">
    <p>To install, run the following command:</p>
    <pre><code>npm install bulma</code></pre>
    <p>Then import it in your CSS file:</p>
    <pre><code>@import "bulma/css/bulma.min.css";</code></pre>
  </div>
</article>

JavaScript Example

Example code to close messages:
document.addEventListener('DOMContentLoaded', () => {
  // Get all message delete buttons
  const deleteButtons = document.querySelectorAll('.message .delete');

  deleteButtons.forEach((button) => {
    button.addEventListener('click', () => {
      const message = button.closest('.message');
      message.remove();
    });
  });
});

Notification vs Message

Messages are similar to notifications but have key differences:
  • Message: Static component, typically used for inline content
  • Notification: Can be fixed/positioned, typically used for alerts
Both use similar color schemes and can have delete buttons.

Accessibility

  • Use <article> for the message container for semantic meaning
  • Add aria-label="delete" to delete buttons
  • Consider using appropriate ARIA roles for alert messages:
<article class="message is-danger" role="alert">
  <div class="message-body">
    Important error message
  </div>
</article>

Color Modifiers

ClassDescription
is-primaryPrimary color
is-linkLink color
is-infoInfo color (blue)
is-successSuccess color (green)
is-warningWarning color (yellow)
is-dangerDanger color (red)
is-darkDark color
is-lightLight color

Size Modifiers

ClassDescription
is-smallSmaller text size
is-mediumMedium text size
is-largeLarger text size

CSS Variables

VariableDefaultDescription
--bulma-message-radiusRadius variableBorder radius
--bulma-message-header-weightSemiboldHeader font weight
--bulma-message-header-padding1em 1.25emHeader padding
--bulma-message-body-padding1.25em 1.5emBody padding
--bulma-message-body-border-width0 0 0 4pxBody border width
The message component doesn’t automatically handle closing/dismissal. You need to add JavaScript to remove messages when the delete button is clicked.

Build docs developers (and LLMs) love