<button class="modal__button" data-keukenhof-open="#modal">
  Open modal
</button>
<div id="modal" class="modal">
  <div class="modal__overlay">
    <div class="modal__container" role="dialog">
      <div class="modal__wrapper">
        <button
          class="modal__button modal__button--close"
          data-keukenhof-close
        >
          <svg
            xmlns="http://www.w3.org/2000/svg"
            viewBox="0 0 24 24"
            role="presentation"
          >
            <path
              d="M13.41,12l4.3-4.29a1,1,0,1,0-1.42-1.42L12,10.59,7.71,6.29A1,1,0,0,0,6.29,7.71L10.59,12l-4.3,4.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l4.29,4.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z"
            />
          </svg>
        </button>
        <main class="modal__main">
          <h2 class="modal__title">Title</h2>
          <p class="modal__desc">
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure
            exercitationem perspiciatis odit dolores soluta minima eveniet
            quasi ex nostrum quibusdam deleniti facere molestias harum velit
            consequuntur ipsam, id commodi dolor?
          </p>
          <a href="#" class="modal__link">More information</a>
        </main>
      </div>
    </div>
  </div>
</div>
:root {
  --gallery: #eee;
  --bright-gray: #1f1f1f;
  --pink-swan: #c3bbbb;
  --white-rgba: rgba(255, 255, 255, 0.6);
  --gallery-rgba: rgba(238, 238, 238, 0.4);
}

body {
  min-width: 100vw;
  min-height: 100vh;
  text-align: center;
  font-family: Helvetica;
}

svg,
img {
  max-width: 100%;
}

.modal {
  display: none;
}

.modal.isOpen {
  display: block;
}

.modal__button {
  margin: 100px 0;
  padding: 15px 40px;
  color: var(--bright-gray);
  background-color: var(--gallery);
  border: none;
  border-radius: 5px;
  cursor: pointer;
  font-size: 16px;
}

.modal__button--close {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 40px;
  height: 40px;
  padding: 7px;
  margin: 0;
  font-size: 0;
  background-color: transparent;
}

.modal__button--close path {
  fill: var(--gallery-rgba);
}

.modal__link {
  color: var(--pink-swan);
}

.modal__overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: var(--white-rgba);
}

.modal__container {
  position: relative;
  width: 100%;
  max-width: 440px;
  max-height: 100vh;
  margin: 0 10px;
  background-color: var(--bright-gray);
  border-radius: 5px;
  color: var(--gallery);
  overflow-y: auto;
}

.modal__wrapper {
  padding: 55px 50px;
}

.modal__title {
  margin: 0 0 20px;
  font-size: 23px;
}

.modal__desc {
  margin: 0 0 25px;
  line-height: 1.65;
}
Keukenhof.init();

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://unpkg.com/keukenhof@1.1.2/dist/index.js