Ghost Dark CSS button
Transparent button for dark toolbars. Hover, click and tab to it to see every state.
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: 11px 20px;
font-family: 'Inter', sans-serif;
font-size: 15px;
font-weight: 600;
line-height: 1.2;
color: #e4e4e7;
background: rgba(255, 255, 255, 0);
border: 0;
border-radius: 8px;
cursor: pointer;
text-decoration: none;
white-space: nowrap;
-webkit-tap-highlight-color: transparent;
transition: transform 150ms ease, box-shadow 150ms ease, filter 150ms ease, background 150ms ease, color 150ms ease;
}
.btn:hover {
transform: translateY(-2px);
filter: brightness(1.0500000000000000444089209850062616169452667236328125);
background: rgba(255, 255, 255, .08000000000000000166533453693773481063544750213623046875);
color: #ffffff;
}
.btn:active {
transform: scale(0.979999999999999982236431605997495353221893310546875);
transition-duration: 75ms;
}
.btn:focus-visible {
outline: 3px solid #e4e4e7;
outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
animation: none;
}
}
HTML
<button class="btn" type="button">
Settings
</button>
How this button is built
- Background: transparent, so the button takes the colour of whatever is behind it.
- Type: Inter, weight 600, 15px, in #e4e4e7.
- Shape: 8px rounded corners with 11px × 20px padding.
- Interaction: on hover it lifts 2px, brightens slightly and switches to #ffffff with #ffffff text, and it squishes slightly when clicked, with 150ms 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 Inter 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.