CSS Link Styling

A link is a clickable element that connects different web pages. For example,

Default Link Styled Link

The above example shows the default link and a link with CSS style.


A link is created using the <a> element. For example,

 <a href="#">Default Link</a>

Browser Output

Default Link

The above example shows the default link that doesn't look good without any styles.

Note: By default, links are in blue text with underlining. When clicked or in the active state, the link color turns red, and visited links have purple text.


CSS text-decoration Property

The text-decoration property is used to remove the default underlines from links. For example,

a {
    text-decoration: none;
}

Browser Output

text-decoration: none

Default Link

Here, the text-decoration property removes the default underline from the link.

Note: The text-decoration property accepts values such as none, underline, overline, line-through, and blink to control various text decoration styles or remove them.


We can use different CSS properties to style our link. For example,

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />
        <title>CSS link styling</title>
    </head>

    <body>
        <a href="#">Click here</a>
    </body>

</html>
a {
    text-decoration: none;
    padding: 10px 20px;
    border-radius: 8px;
    font-family: Monospace;
    text-align: center;
    color: white;
    background-color: purple;
}

Browser Output

Click here

In the above example,

  • text-decoration: none removes the underline from link
  • padding: 10px 30px adds padding to the link
  • border-radius: 8px.rounds the link borders by 8px
  • font-family: Monospace defines the font family of the button text
  • text-align: center aligns the text in the center
  • color: white sets the text color to white
  • background-color: blue adds a purple color to link background

Links can be styled differently based on their states using the following pseudo-classes.

  • :link: default and unvisited link
  • :visited: link visited by user
  • :hover: link with mouse over it
  • :focus: link that is currently focused
  • :active: link that has just been clicked

Let's see an example,

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />
        <title>CSS Link States</title>
    </head>

    <body>
        <p>Link having default state styles.</p>
        <a href="#">Default Link State</a>
        <p>Link having updated state styles.</p>
        <a href="#" class="new">Styled Link State</a>
    </body>
</html>
/* styles the default link*/
a.new:link {
    color: green;
}

/* styles the unvisited link */
a.new:visited {
    color: green;
}

/* styles the link on being hovered */
a.new:hover {
    color: blue;
}

/* styles the link while clicked */
a.new:active {
    color: red;
}

Browser Output

Link having default state styles.

Default Link State

Link having updated state styles.

Styled Link State

In the above example,

  • a:link unvisited link has green color
  • a:hover link has blue color on hover
  • a:visited visited link has green color
  • a:active link has red color when clicked

Note: The link states must be in this specific order :link, :visited, :focus, :hover and :active for proper CSS stylings.


Links can also be styled as a button. For example,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />
        <title>Links as Button</title>
    </head>

    <body>
        <a class="first-link" href="#">Submit</a>
        <a class="second-link" href="#">Delete</a>
    </body>
</html>
a {
    text-decoration: none;
    border: 1px solid black;
    border-radius: 5px;
    font-weight: bold;
    font-size: 18px;
    font-family: "Courier New", Courier, monospace;
    color: white;
    padding: 10px;
    margin-left: 10px;
    margin: 20px;
    text-align: center;
    cursor: pointer;
}

a.first-link {
    background-color: green;
}

a.second-link {
    background-color: red;
}

a.first-link:hover {
    background-color: blue;
}

a.second-link:hover {
    background-color: purple;
}

a:active {
    color: rgba(255, 255, 255, 0.4);
}

Browser Output

Submit Delete

The above example shows the link as a button.


We can style an image as the link. For example,

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>CSS Image Link</title>

    <body>
        <p>Menu Items</p>
        <ul>
            <li>Tea</li>
            <li>Coffee</li>
            <li>Soup</li>
        </ul>
        <p>
            Read our full menu here: <br>
            <a href="#"><img src="https://cdn-icons-png.flaticon.com/512/4813/4813075.png" alt=""></a>
        </p>
    </body>

</html>
img {
    max-width: 80px;
    border: 2px solid;
    background-color: aliceblue;
}

a:hover {
    color: blue;
}

Browser Output

Styling Image as a Link

Menu Items

  • Tea
  • Coffee
  • Soup

Read our full menu here:

In this way, we can style the image as a link.


Cursor Property

The cursor property is used to add different cursors in our links such as pointer, help, wait, etc. For example,

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />
        <title>CSS Cursors</title>
    </head>

    <body>
        <p>You can have additional information from <a href="#">here</a>.</p>
    </body>

</html>
a:hover {
    cursor: help;
}

Browser Output

You can have additional information from here .

In this way, we can change the cursor of the link when it is being hovered.


Creating Navigation Bar

Let's use different link properties to create a navigation bar,

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link rel="stylesheet" href="style.css" />

        <title>CSS Navigation</title>
    </head>

    <body>
        <h2>Navigation Bar</h2>
        <nav>
            <a href="#">Home</a>
            <a href="#">About</a>
            <a href="#">Contact</a>
        </nav>
    </body>
</html>
/* common styles for all links */
a {
    font-size: 18px;
    text-decoration: none;
    padding: 8px 12px;
    margin-right: 12px;
    border: 1px solid black;
    border-radius: 5px;
    transition: all 0.3s ease;
    background-color: purple;
    color: white;
}

/* styles links while mouse is hovered over */
a:hover {
    background-color: orange;
}

/* styles links while being clicked */
a:active {
    color: blue;
}

Browser Output

Navigation Bar

Home About Contact

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community