CSS Button Creator

Sunset Flow CSS button

Animated warm gradient pill with a pulse ring. Hover, click and tab to it to see every state.

Customize this button →

CSS

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

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  padding: 14px 34px;
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.2;
  color: #ffffff;
  background: linear-gradient(90deg, #f43f5e 0%, #f59e0b 50%, #d946ef 100%);
  background-size: 200% 200%;
  border: 0;
  border-radius: 999px;
  box-shadow: 0 12px 28px -10px rgba(244, 63, 94, .6999999999999999555910790149937383830547332763671875);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  transition: transform 200ms cubic-bezier(.2,.8,.2,1), box-shadow 200ms cubic-bezier(.2,.8,.2,1), filter 200ms cubic-bezier(.2,.8,.2,1);
  animation: btn-flow 4s ease-in-out infinite alternate, btn-pulse 2s ease-out infinite;
}

.btn__icon {
  display: inline-block;
  transition: transform 200ms cubic-bezier(.2,.8,.2,1);
}

.btn:hover {
  transform: translateY(-2px) scale(1.0300000000000000266453525910037569701671600341796875);
  filter: brightness(1.0500000000000000444089209850062616169452667236328125);
  box-shadow: 0 14px 32px -10px rgba(244, 63, 94, .6999999999999999555910790149937383830547332763671875);
}

.btn:hover .btn__icon {
  transform: translateX(-3px);
}

.btn:active {
  transform: translateY(1px) scale(0.979999999999999982236431605997495353221893310546875);
  box-shadow: 0 11px 28px -10px rgba(244, 63, 94, .6999999999999999555910790149937383830547332763671875);
  transition-duration: 100ms;
}

.btn:focus-visible {
  outline: 3px solid #a78bfa;
  outline-offset: 3px;
  animation: btn-flow 4s ease-in-out infinite alternate;
}

@keyframes btn-flow {
  from {
    background-position: 0% 50%;
  }
  to {
    background-position: 100% 50%;
  }
}

@keyframes btn-pulse {
  from {
    outline: 2px solid rgba(244, 63, 94, .6999999999999999555910790149937383830547332763671875);
    outline-offset: 0;
  }
  to {
    outline: 2px solid rgba(244, 63, 94, 0);
    outline-offset: 12px;
  }
}

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

HTML

<button class="btn" type="button">
  <span class="btn__icon" aria-hidden="true">✦</span>
  Get started
</button>

How this button is built

How to use it

  1. Copy the CSS into your stylesheet. The @import line loads the Inter 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.