Drawer

A dismissible panel that slides out from the edge of the screen.

Defaults

You can create a drawer by creating a dialog element with the class drawer. You'll also need to add one of the following classes to specify the side of the screen the drawer should slide out from:

  • left
  • right
  • top
  • bottom

Inside your drawer, you can add a header, body, and footer.

The header should have the class drawer-header and contain a title and, optionally, a close button (a button with the classes button and dismiss).

The body should have the class drawer-body and contain the main content of the drawer.

The footer should have the class drawer-footer and contain any action buttons or other controls that should appear at the bottom.

User Settings

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis ultricies lacus sed turpis tincidunt id. Rhoncus mattis rhoncus urna neque viverra justo nec.

Pretium nibh ipsum consequat nisl vel pretium lectus quam. Ac placerat vestibulum lectus mauris ultrices. Elementum sagittis vitae et leo duis ut diam. Odio facilisis mauris sit amet massa. Cras semper auctor neque vitae tempus quam. Cursus metus aliquam eleifend mi in. Fermentum iaculis eu non diam. Diam quam nulla porttitor massa id neque aliquam

HTML Copied!
<button
  class="button"
  onclick="document.querySelector('#drawer-1').showModal()"
>
  Open Drawer
</button>

<dialog id="drawer-1" class="drawer left medium">
  <header class="drawer-header">
    <h1>User Settings</h1>
    <button
      class="button dismiss"
      onclick="document.querySelector('#drawer-1').close()"
    ></button>
  </header>
  <div class="drawer-body">
    <p class="paragraph">
      Lorem ipsum dolor sit amet, consectetur adipiscing
      elit, sed do eiusmod tempor incididunt ut labore et
      dolore magna aliqua. Duis ultricies lacus sed turpis
      tincidunt id. Rhoncus mattis rhoncus urna neque
      viverra justo nec.
    </p>
    <p class="paragraph">
      Pretium nibh ipsum consequat nisl vel pretium lectus
      quam. Ac placerat vestibulum lectus mauris ultrices.
      Elementum sagittis vitae et leo duis ut diam. Odio
      facilisis mauris sit amet massa. Cras semper auctor
      neque vitae tempus quam. Cursus metus aliquam eleifend
      mi in. Fermentum iaculis eu non diam. Diam quam nulla
      porttitor massa id neque aliquam
    </p>
  </div>
  <div class="drawer-footer">
    <button
      class="button"
      onclick="document.querySelector('#drawer-1').close()"
    >
      Cancel
    </button>
    <button
      class="button primary"
      onclick="document.querySelector('#drawer-1').close()"
    >
      Save
    </button>
  </div>
</dialog>

Sizes

You can control the width of a drawer (or the height, if the drawer is attached to the top or bottom of the screen) by adding one of the following classes to the dialog element:

  • auto (default)
  • small
  • medium
  • large

If the size is auto, the drawer will be as large as necessary to fit its content without extending past the edge of the screen.

Below is an example of a drawer with the class small.

User Settings

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis ultricies lacus sed turpis tincidunt id. Rhoncus mattis rhoncus urna neque viverra justo nec.

Pretium nibh ipsum consequat nisl vel pretium lectus quam. Ac placerat vestibulum lectus mauris ultrices. Elementum sagittis vitae et leo duis ut diam. Odio facilisis mauris sit amet massa. Cras semper auctor neque vitae tempus quam. Cursus metus aliquam eleifend mi in. Fermentum iaculis eu non diam. Diam quam nulla porttitor massa id neque aliquam

HTML Copied!
<button
  class="button"
  onclick="document.querySelector('#drawer-2').showModal()"
>
  Open Drawer
</button>

<dialog id="drawer-2" class="drawer left small">
  <div class="drawer-header">
    <h1>User Settings</h1>
    <button
      class="button dismiss"
      onclick="document.querySelector('#drawer-2').close()"
    ></button>
  </div>
  <div class="drawer-body">
    <p class="paragraph">
      Lorem ipsum dolor sit amet, consectetur adipiscing
      elit, sed do eiusmod tempor incididunt ut labore et
      dolore magna aliqua. Duis ultricies lacus sed turpis
      tincidunt id. Rhoncus mattis rhoncus urna neque
      viverra justo nec.
    </p>
    <p class="paragraph">
      Pretium nibh ipsum consequat nisl vel pretium lectus
      quam. Ac placerat vestibulum lectus mauris ultrices.
      Elementum sagittis vitae et leo duis ut diam. Odio
      facilisis mauris sit amet massa. Cras semper auctor
      neque vitae tempus quam. Cursus metus aliquam eleifend
      mi in. Fermentum iaculis eu non diam. Diam quam nulla
      porttitor massa id neque aliquam
    </p>
  </div>
  <div class="drawer-footer">
    <button
      class="button"
      onclick="document.querySelector('#drawer-2').close()"
    >
      Cancel
    </button>
    <button
      class="button primary"
      onclick="document.querySelector('#drawer-2').close()"
    >
      Save
    </button>
  </div>
</dialog>

Dismiss Button

You can add a close button to the header of the drawer by creating a button element with the classes button and dismiss. The close button should call the close method on the dialog element when clicked.

User Settings

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis ultricies lacus sed turpis tincidunt id. Rhoncus mattis rhoncus urna neque viverra justo nec.

Pretium nibh ipsum consequat nisl vel pretium lectus quam. Ac placerat vestibulum lectus mauris ultrices. Elementum sagittis vitae et leo duis ut diam. Odio facilisis mauris sit amet massa. Cras semper auctor neque vitae tempus quam. Cursus metus aliquam eleifend mi in. Fermentum iaculis eu non diam. Diam quam nulla porttitor massa id neque aliquam

HTML Copied!
<button
  class="button"
  onclick="document.querySelector('#drawer-2').showModal()"
>
  Open Drawer
</button>

<dialog id="drawer-2" class="drawer left small">
  <div class="drawer-header">
    <h1>User Settings</h1>
    <button
      class="button dismiss"
      onclick="document.querySelector('#drawer-2').close()"
    ></button>
  </div>
  <div class="drawer-body">
    <p class="paragraph">
      Lorem ipsum dolor sit amet, consectetur adipiscing
      elit, sed do eiusmod tempor incididunt ut labore et
      dolore magna aliqua. Duis ultricies lacus sed turpis
      tincidunt id. Rhoncus mattis rhoncus urna neque
      viverra justo nec.
    </p>
    <p class="paragraph">
      Pretium nibh ipsum consequat nisl vel pretium lectus
      quam. Ac placerat vestibulum lectus mauris ultrices.
      Elementum sagittis vitae et leo duis ut diam. Odio
      facilisis mauris sit amet massa. Cras semper auctor
      neque vitae tempus quam. Cursus metus aliquam eleifend
      mi in. Fermentum iaculis eu non diam. Diam quam nulla
      porttitor massa id neque aliquam
    </p>
  </div>
  <div class="drawer-footer">
    <button
      class="button"
      onclick="document.querySelector('#drawer-2').close()"
    >
      Cancel
    </button>
    <button
      class="button primary"
      onclick="document.querySelector('#drawer-2').close()"
    >
      Save
    </button>
  </div>
</dialog>

Playground


User Settings

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis ultricies lacus sed turpis tincidunt id. Rhoncus mattis rhoncus urna neque viverra justo nec.

Pretium nibh ipsum consequat nisl vel pretium lectus quam. Ac placerat vestibulum lectus mauris ultrices. Elementum sagittis vitae et leo duis ut diam. Odio facilisis mauris sit amet massa. Cras semper auctor neque vitae tempus quam. Cursus metus aliquam eleifend mi in. Fermentum iaculis eu non diam. Diam quam nulla porttitor massa id neque aliquam