Ora

What is the purpose of Bootstrap class names d-none and d-block?

Published in Bootstrap Display Utilities 3 mins read

The Bootstrap class names d-none and d-block are fundamental utility classes designed to control the display behavior and visibility of HTML elements. They primarily manipulate the CSS display property, allowing developers to show or hide elements and dictate how they render on a webpage.

Understanding d-none

The d-none class is used to hide an element entirely from the page. When applied, it sets the CSS display property of the element to none. This means the element not only becomes invisible but also removes it from the document flow, so it does not take up any space on the page.

  • Key Function: Hides the element, making it completely non-existent in the layout.
  • Practical Use: Ideal for elements that should be hidden by default, or for toggling visibility via JavaScript, like modal dialogs, off-canvas menus, or conditional content sections.

Understanding d-block

Conversely, the d-block class is used to display an element as a block-level element. When applied, it sets the CSS display property of the element to block. A block-level element always starts on a new line and takes up the full available width.

  • Key Function: Displays the element and forces it to behave like a block-level element.
  • Practical Use: Useful for overriding default display properties of elements (e.g., making a <span> behave like a block) or for making an element visible again after being hidden by d-none.

How They Control Visibility

In essence, these classes provide a simple yet powerful mechanism for controlling the visibility of elements. The d-none class effectively hides an element from view and the layout, while the d-block class ensures it is displayed and occupies space as a block-level element.

Responsive Display Utilities

Bootstrap extends these utility classes with responsive breakpoints, allowing developers to control visibility based on screen size. This is achieved by combining d-none or d-block with a breakpoint suffix (e.g., sm, md, lg, xl, xxl).

  • d-{breakpoint}-none: Hides the element from the specified breakpoint upwards.
  • d-{breakpoint}-block: Displays the element as block from the specified breakpoint upwards.

For instance, d-none d-md-block means an element will be hidden on extra-small (xs) and small (sm) screens, but displayed as a block on medium (md) screens and larger.

Common Scenarios and Examples

These utility classes are incredibly versatile for various web design and development tasks, especially in responsive layouts.

  • Toggle Visibility:

    <button onclick="toggleElement()">Toggle Content</button>
    <div id="myContent" class="d-none">
        <p>This content can be toggled visible or hidden.</p>
    </div>
    <script>
        function toggleElement() {
            const content = document.getElementById('myContent');
            if (content.classList.contains('d-none')) {
                content.classList.remove('d-none');
                content.classList.add('d-block');
            } else {
                content.classList.remove('d-block');
                content.classList.add('d-none');
            }
        }
    </script>
  • Responsive Navigation:

    <nav class="navbar">
        <ul class="d-none d-md-flex"> <!-- Hidden on small, displayed as flex on medium+ -->
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
        </ul>
        <button class="d-md-none">Menu</button> <!-- Displayed on small, hidden on medium+ -->
    </nav>
  • Conditional Content:

    <div class="alert alert-success d-none d-lg-block">
        <p>This success message only appears on large screens and above.</p>
    </div>

Summary of d-none vs. d-block

Class Name Effect on Element Primary Purpose Common Usage
d-none Sets display: none;. Element is hidden and removed from document flow. Hiding elements Initial state for toggled content, removing elements from specific viewports.
d-block Sets display: block;. Element is displayed as a block-level element. Displaying elements as block Overriding inline default, making hidden elements visible, ensuring elements take full width.

For more comprehensive information on display utilities and responsive behaviors, refer to the official Bootstrap documentation.