In recent years, ghost buttons have solidified their position as a trendy and elegant element. Characterized by their transparent nature and minimalist outline, ghost buttons, also known as “empty” or “naked” buttons, offers a sleek, clean aesthetic that can improve user experience. Below, we’ll explore how to create such a ghost button using CSS.


UX Consideration for Ghost Buttons

Ghost buttons are typically bordered by a fine line and contain plain text within. Often used as CTAs, they provide a neat appearance, grabbing attention with high contrast while offering a fresh take on the “flat” look.

Furthermore, they’ve become popular because they’re simple to design, help create focal points without overwhelming the user, and improve aesthetics by maintaining a clean UI. Plus, they easily integrate into any design due to their ability to blend with the environment.

Despite their benefits, ghost buttons must be used wisely. Inappropriate placement can cause them to blend too much with the overall layout, and in worst-case scenarios, they can be mistaken for input fields. It would be best if you were cautious when using them, especially on a background image, as they can fall too far into the background and lead to text legibility issues.

Now that we understand certain UX implications, let’s create one using HTML and CSS.

Setting Up the Structure for Our Ghost Button

The first step to creating a Ghost Button with CSS involves setting up the HTML structure. In this setup, we’re using the <a> element to serve as the base for our Ghost Button. Here’s how it looks:

<a href="" class="elegant-ghost-button" target="_blank">Featured</a> 

Styling the Ghost Button with CSS

The next step is to define the appearance of our ghost button. Here’s a look at the CSS code we’ll be using:

body {
  background: #1b1f25;

/* Styling our Ghost Button */
.elegant-ghost-button {
    text-align: center;  /* Centers the button text */
    color: #ffffff;  /* Sets text color */
    background: #1b1f25;  /* Matches button background with body background for the 'ghost' effect */
    border: 1px solid #ffffff;  /* Sets a thin white border around the button */
    font-size: 18px;
    padding: 12px 12px;
    display: inline-block;  /* Enables the button to align better with other elements */
    text-decoration: none;  /* Removes the default underline of the anchor text */
    font-family: "Maven Pro", sans-serif;
    min-width: 120px;  /* Ensures a sufficient clickable area */
    transition: background 0.3s ease-in-out, color 0.3s ease-in-out;  /* Adds a smooth color transition on hover */

/* Changes color and background on hover to provide dynamic feedback */
.elegant-ghost-button:hover, .elegant-ghost-button:active {
  color: #1b1f25;
  background: #ffffff;

Initially, the body background color is set to #1b1f25, a dark hue that will contrast effectively with our ghost button.

Then we move to the .elegant-ghost-button class to define our button’s look and behavior:

  • text-align: center – This property is used to horizontally align the text within the button, aiding in visual balance.
  • color and background – The color property is set to #ffffff, which results in white text. The background is the same color as the body’s background. This helps create the ‘ghost’ effect, where the button appears to blend with the background.
  • border: 1px solid #ffffff – This property outlines the button with a thin white border, further defining the ghost button effect.
  • font-size and font-family – These properties specify the text’s size (18px) and font (“Maven Pro”, sans-serif) for an easy-to-read and attractive button label.
  • padding: 12px 24px – The padding property provides space around the text and also defines the button’s dimensions.
  • display: inline-block – This property ensures the button aligns properly with other inline elements.
  • text-decoration: none – This property is used to remove the default underline that usually accompanies anchor text.
  • transition – This property smoothens the color change over a 0.3 seconds duration when the button is hovered over or clicked. The effect is engaging, as the background color turns white and the text color darkens to #1b1f1f.

In addition to the static properties of the button, the hover effect is crucial to its interactivity. The .elegant-ghost-button:hover, .elegant-ghost-button:active selectors are used to switch the background and text color when the user interacts with the button, providing clear feedback that the button is clickable.

In a more practical scenario, these properties and their values might require adjustments to resonate with your website’s design theme and functional requirements. For instance, you may need to modify the button’s dimensions, colors, font properties, and transition duration to align with your site’s aesthetic. To improve the responsiveness across different devices, you might need to employ media queries to adjust padding and font size according to the viewport size. Lastly, for layouts using flexbox or grid, the management of the button’s size and positioning would need to be considered.

The Result

See the Pen Ghost Button CSS #1 by 1stWebDesigner (@firstwebdesigner) on CodePen.

Final Thoughts

Ghost buttons introduce a minimalist and clean design to web pages, making them particularly useful in contexts where a simplistic, understated aesthetic is desired. However, due to their subtle nature, they may not stand out as prominently as other design elements. As such, using them as the primary CTA on your webpage might not be the most effective strategy.

They often shine when used for secondary or tertiary actions, where their understated elegance can enhance the overall design without drawing unnecessary attention. For instance, they can be used as navigational buttons, form submission buttons, or secondary action prompts that complement a primary, more conspicuous CTA.

Remember, successful design hinges on understanding and applying elements in their effective contexts. Ghost buttons, when used judiciously, can contribute to a visually pleasing and user-friendly interface.

This post may contain affiliate links. See our disclosure about affiliate links here.