CSS Button Creator

Clay Lilac CSS button

Puffy claymorphism button in lilac. Hover, click and tab to it to see every state.

CSS

@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&display=swap');

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  padding: 15px 30px;
  font-family: 'Fredoka', sans-serif;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.2;
  color: #1e1b4b;
  background: #a5b4fc;
  border: 0;
  border-radius: 22px;
  box-shadow: 8px 10px 20px -4px rgba(74, 81, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(124, 135, 189, .450000000000000011102230246251565404236316680908203125), inset 5px 5px 10px 0 rgba(255, 255, 255, .450000000000000011102230246251565404236316680908203125);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  transition: transform 200ms cubic-bezier(.34,1.56,.64,1), box-shadow 200ms cubic-bezier(.34,1.56,.64,1), filter 200ms cubic-bezier(.34,1.56,.64,1);
}

.btn:hover {
  transform: translateY(-2px) scale(1.020000000000000017763568394002504646778106689453125);
  filter: brightness(1.04000000000000003552713678800500929355621337890625);
  box-shadow: 8px 12px 24px -4px rgba(74, 81, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(124, 135, 189, .450000000000000011102230246251565404236316680908203125), inset 5px 5px 10px 0 rgba(255, 255, 255, .450000000000000011102230246251565404236316680908203125);
}

.btn:active {
  transform: translateY(1px) scale(0.95999999999999996447286321199499070644378662109375);
  box-shadow: 7px 9px 20px -4px rgba(74, 81, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(124, 135, 189, .450000000000000011102230246251565404236316680908203125), inset 5px 5px 10px 0 rgba(255, 255, 255, .450000000000000011102230246251565404236316680908203125);
  transition-duration: 100ms;
}

.btn:focus-visible {
  outline: 3px solid #a5b4fc;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none;
    animation: none;
  }
}

HTML

<button class="btn" type="button">
  Get started
</button>

How this button is built

How to use it

  1. Copy the CSS into your stylesheet. The @import line loads the Fredoka font from Google Fonts. Move it to the top of your file, or drop it if you already load the font.
  2. Paste the HTML where you want the button. It works on <button>, <a> and <input type="submit">.
  3. Change the label, or rename the .btn class if it clashes with your framework. Want a different colour or size? Open it in the editor, change it visually, and copy the new code.