CSS Button Style Generator

Sizing & Text

Appearance

Shadow

Hover State

Button CSS

Hover CSS

Using the Button Generator

This tool helps you visually design and fine-tune CSS buttons. Adjust the properties for the button's default and hover states and get the clean CSS code to use in your projects.

  1. Style the Base Button. Use the "Sizing & Text", "Appearance", and "Shadow" controls to design the default look of your button.
  2. Style the Hover State. Use the "Hover State" controls to define how the button looks when a user's mouse is over it.
  3. Test the Interaction. Hover over the preview button to see your transition and hover styles in action.
  4. Copy the CSS. Two separate code blocks are provided. Copy the base CSS for your button's default styles, and the hover CSS for its interactive state.

Anatomy of a Well-Styled Button

A good button is more than just a link. It's a key piece of user interaction that needs to be clear, accessible, and satisfying to use. This involves styling several CSS properties.

PropertyRole in Button Design
paddingProvides breathing room around the button text, making it easier to read and click.
background-colorThe primary fill of the button, used to convey its importance or state.
colorThe color of the button's text label. Must have sufficient contrast with the background.
border & border-radiusDefines the button's shape, from sharp-cornered to fully rounded.
box-shadowAdds depth and helps lift the button off the page, making it look more clickable.
transitionSmooths the change between the default and hover states, providing pleasant visual feedback.
cursor: pointer;Changes the mouse cursor to a hand, which is a universal signal that an element is clickable.

The Importance of :hover and :focus States

Interactive elements like buttons must provide clear feedback to the user. Visual changes on hover and focus are essential for good user experience and accessibility.

  • :hover provides feedback for mouse users, confirming that their cursor is over a clickable target. A change in background color, text color, or shadow is common.
  • :focus provides the same feedback for keyboard users who navigate using the Tab key. Without a visible focus state, keyboard users have no way of knowing which element is currently active. Browsers provide a default focus outline (often a blue ring), and it is important not to remove it without providing a clear, high-contrast alternative.

For modern, robust focus styles, you can use the :focus-visible pseudo-class. This allows you to show focus styles primarily for keyboard users, without showing them for mouse users who click the button.

/* A good practice for focus styles */
.btn:focus-visible {
  outline: 2px solid #0056b3;
  outline-offset: 2px;
}

Accessibility Considerations

  • Color Contrast. The contrast between your button's text color and its background color should meet WCAG AA standards (a contrast ratio of at least 4.5:1 for normal text).
  • Semantic HTML. Always use a <button> element for actions (like submitting a form) or an <a> tag styled as a button for navigation (linking to another page). Do not use a <div>, as it is not accessible to screen readers or keyboard users by default.
  • Clear Text. The button's text should clearly describe the action it performs (e.g., "Submit Application", not just "Click Here").