Block

Bulma’s most basic spacer block

The block element is a simple spacer tool. It allows sibling HTML elements to have a consistent margin between them:

示例

This text is within a block.
This text is within a second block. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean efficitur sit amet massa fringilla egestas. Nullam condimentum luctus turpis.
This text is within a third block. This block has no margin at the bottom.

HTML

<div class="block">
  This text is within a <strong>block</strong>.
</div>
<div class="block">
  This text is within a <strong>second block</strong>. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean efficitur sit amet massa fringilla egestas. Nullam condimentum luctus turpis.
</div>
<div class="block">
  This text is within a <strong>third block</strong>. This block has no margin at the bottom.
</div>

As you can see, the first two blocks have a margin-bottom applied, but not the third one.. That is because Bulma applies a space on all blocks, except the last one. This means you can use as many blocks as you want, the spacing will only appear between them.

Without using block, the HTML elements would have no space between them:

示例

This text is not within a block.
This text isn't within a block either. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean efficitur sit amet massa fringilla egestas. Nullam condimentum luctus turpis.
This text is also not within a block.

HTML

<div>
  This text is <em>not</em> within a <strong>block</strong>.
</div>
<div>
  This text <em>isn't</em> within a <strong>block</strong> either. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean efficitur sit amet massa fringilla egestas. Nullam condimentum luctus turpis.
</div>
<div>
  This text is also <em>not</em> within a <strong>block</strong>.
</div>

You're already using it #

As a matter of fact, you're already using the block without knowing it. Its CSS properties are shared across several Bulma elements and components:

  • breadcrumb
  • level
  • message
  • pagination
  • tabs
  • box
  • content
  • notification
  • other
  • progress
  • table
  • title

This is thanks to the @extend %block Sass placeholder feature.

Here's how it would look like in comparison:

Without block

30%
Primar lorem ipsum dolor sit amet, consectetur adipiscing elit lorem ipsum dolor.

Error

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur.

With block

30%
Primar lorem ipsum dolor sit amet, consectetur adipiscing elit lorem ipsum dolor.

Error

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur.

No matter which Bulma elements and components you are using, and no matter their order, they will have a consistent space between them.

One line of CSS #

As you can see, the CSS of the block is very simple: it applies a margin-bottom on all siblings, except the last one.

.block:not(:last-child) {
  margin-bottom: 1.5rem;
}

This prevents the last sibling from adding unnecessary space at the bottom.