Clay Sky CSS button
Puffy claymorphism button in sky blue. 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: #082f49;
background: #7dd3fc;
border: 0;
border-radius: 22px;
box-shadow: 8px 10px 20px -4px rgba(56, 95, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(94, 158, 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__icon {
display: inline-block;
transition: transform 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(56, 95, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(94, 158, 189, .450000000000000011102230246251565404236316680908203125), inset 5px 5px 10px 0 rgba(255, 255, 255, .450000000000000011102230246251565404236316680908203125);
}
.btn:hover .btn__icon {
transform: translateX(3px);
}
.btn:active {
transform: translateY(1px) scale(0.95999999999999996447286321199499070644378662109375);
box-shadow: 7px 9px 20px -4px rgba(56, 95, 113, .34999999999999997779553950749686919152736663818359375), inset -5px -5px 10px 0 rgba(94, 158, 189, .450000000000000011102230246251565404236316680908203125), inset 5px 5px 10px 0 rgba(255, 255, 255, .450000000000000011102230246251565404236316680908203125);
transition-duration: 100ms;
}
.btn:focus-visible {
outline: 3px solid #7dd3fc;
outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
.btn,
.btn__icon {
transition: none;
animation: none;
}
}
HTML
<button class="btn" type="button">
Next
<span class="btn__icon" aria-hidden="true">→</span>
</button>
How this button is built
- Background: a solid #7dd3fc fill.
- Type: Fredoka, weight 600, 17px, in #082f49.
- Shape: 22px rounded corners with 15px × 30px padding.
- Depth: a coloured glow and inset shadows for a highlighted, sculpted edge.
- Interaction: on hover it lifts 2px, scales to 102%, brightens slightly and nudges its icon, and it squishes slightly when clicked, with 200ms transitions.
- Accessibility: a visible
:focus-visiblering for keyboard users, and all motion turns off underprefers-reduced-motion.
How to use it
- Copy the CSS into your stylesheet. The
@importline loads the Fredoka font from Google Fonts. Move it to the top of your file, or drop it if you already load the font. - Paste the HTML where you want the button. It works on
<button>,<a>and<input type="submit">. - Change the label, or rename the
.btnclass 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.