CSS Button Creator

Newsprint CSS button

Editorial black-and-white serif button. Hover, click and tab to it to see every state.

CSS

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  padding: 14px 28px;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.08000000000000000166533453693773481063544750213623046875em;
  text-transform: uppercase;
  color: #000000;
  background: #fafaf9;
  border: 2px solid #000000;
  border-radius: 0px;
  box-shadow: 3px 3px 0 0 #000000;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  transition: transform 100ms cubic-bezier(.2,.8,.2,1), box-shadow 100ms cubic-bezier(.2,.8,.2,1), filter 100ms cubic-bezier(.2,.8,.2,1);
}

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

.btn:hover {
  transform: translateY(-2px);
  box-shadow: 3px 5px 0 0 #000000;
}

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

.btn:active {
  transform: translateY(6px);
  box-shadow: 0 0 0 0 #000000;
  transition-duration: 50ms;
}

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

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

HTML

<button class="btn" type="button">
  Read more
  <span class="btn__icon" aria-hidden="true">→</span>
</button>

How this button is built

How to use it

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