How do I create an HTML button that acts like a link?
You have a few options for creating an HTML button that navigates to another page, effectively acting like a link. Below are some of the most common methods:
1. Use a <button> with an onclick to Change window.location
A simple way is to set the onclick handler so that clicking the button updates the current location:
<button type="button" onclick="window.location.href='https://example.com';">
Go to Example.com
</button>
- Pros: Straightforward and requires only a small JavaScript snippet.
- Cons: If JavaScript is disabled, the button won’t work as a link.
2. Use a <button> Inside a Form (GET Request)
If you want to submit a form-like request and navigate via GET:
<form action="https://example.com" method="get">
<button type="submit">
Go to Example.com
</button>
</form>
- Behavior: Acts as a link by sending a GET request to
https://example.com. - Trade-off: This triggers a full page reload and is less flexible if you just need pure navigation without form submission.
3. Style an Anchor (<a>) to Look Like a Button
Often considered the best practice for accessibility if all you need is navigation. You can turn an <a> tag into a visually styled button:
<a href="https://example.com" class="btn">
Go to Example.com
</a>
.btn {
display: inline-block;
padding: 0.5em 1em;
background-color: #3498db;
color: #fff;
text-decoration: none;
border-radius: 4px;
}
.btn:hover {
background-color: #2980b9;
}
- Pros: Uses correct semantic markup for navigation. Users without JavaScript can still navigate, and screen readers will treat it as a link.
- Cons: Requires CSS for the button look.
Best Practice Tip
- If the element’s sole purpose is navigation, prefer using a link (
<a href="..." >) styled to look like a button. - If it’s a form action or triggers an in-page action, a button (
<button>) is semantically appropriate.
Recommended Courses
Level Up Your Web Development Skills
To deepen your knowledge of HTML, CSS, and JavaScript fundamentals, check out these courses on DesignGurus.io:
These courses combine conceptual explanations with real-world practice, helping you build dynamic web applications with semantic, accessible elements. Additionally, visit the DesignGurus.io YouTube channel for free tutorials and discussions on software engineering, system design, and more.