How to Create a Simple Navbar with Tailwind CSS


By Faraz -

Learn how to create a sleek and responsive navbar using Tailwind CSS with our step-by-step guide. Elevate your web design skills today!

Tailwind CSS Navbar Tutorial for Beginners.jpg

In the realm of web development, user experience is paramount. Navigating a website should be effortless, and a well-designed navbar plays a pivotal role in achieving this goal. Tailwind CSS, with its simplicity and flexibility, has gained immense popularity among developers for creating intuitive and responsive user interfaces.

This comprehensive guide will walk you through the step-by-step process of crafting a sleek and user-friendly navbar using Tailwind CSS. Whether you're a seasoned developer looking to streamline your workflow or a beginner eager to dive into front-end design, this tutorial will equip you with the skills to build a navbar that enhances your website's usability and aesthetics.

Let's embark on this journey to create a simple yet effective navbar that will elevate your web design game.

Source Code

Step 1 (HTML Code):

To get started, we will first need to create a basic HTML file. In this file, we will include the main structure for our navbar.

After creating the files just paste the following codes into your file. Make sure to save your HTML document with a .html extension, so that it can be properly viewed in a web browser.

Let's break down the code step by step:

1. <!DOCTYPE html>: This is the document type declaration and indicates that the document is an HTML5 document.

2. <html lang="en">: This is the opening <html> tag, which defines the document as an HTML document with the "en" language attribute, indicating English as the primary language.

3. <head>: The <head> section contains meta-information about the document and links to external resources. It typically includes metadata and links to stylesheets and scripts.

  • <title>Simple Tailwind CSS Navbar</title>: This sets the title of the webpage, which is displayed in the browser's title bar or tab.
  • <meta charset="UTF-8" />: This meta tag defines the character encoding of the document as UTF-8, which is a widely used character encoding for handling various character sets and symbols.
  • <meta name="viewport" content="width=device-width" />: This meta tag sets the viewport's width to the width of the device, ensuring that the webpage is responsive and adapts to different screen sizes.
  • <script src="https://cdn.tailwindcss.com"></script>: This script tag includes the Tailwind CSS framework from an external CDN (Content Delivery Network), which provides pre-designed styles and classes for styling the webpage.

4. <body>: The <body> tag contains the content of the webpage that is visible to the user.

5. <nav class="bg-white border-gray-200 dark:bg-gray-900 shadow-md">: This defines a navigation bar (<nav>) with various classes applied. These classes come from the Tailwind CSS framework and are used to style the navbar. It includes a white background, a gray border, and a shadow. There's also a dark mode variation for the background color.

6. Inside the navbar, there's a <div> element with additional classes for styling. This <div> contains the logo, a menu toggle button, and the navigation links.

7. <a href="https://www.codewithfaraz.com/" class="flex items-center">: This is a link (<a>) element with a URL pointing to "https://www.codewithfaraz.com/". It contains an image (logo) and a text element styled using Tailwind CSS classes. The image is wrapped in a flex container to control alignment.

8. <button id="navbar-toggle" data-collapse-toggle="navbar-default" type="button" ...>: This is a button element that serves as a toggle for the navigation menu on smaller screens. It has an id attribute for identification and data attributes for handling the toggle functionality. It includes an SVG icon for the toggle button.

9. <div class="hidden w-full md:block md:w-auto" id="navbar-default">: This <div> contains the navigation links. It has different classes to control its visibility and width based on screen size (using responsive classes like md:block and md:w-auto).

10. Inside this <div>, there's an unordered list (<ul>) containing list items (<li>) representing the navigation menu items.

11. Each list item contains a link (<a>) with various classes applied to style the links. The classes control padding, background color, text color, and hover effects. The aria-current attribute is used to indicate the current page.

12. <script src="script.js"></script>: This script tag includes an external JavaScript file named "script.js." It suggests that there may be some JavaScript functionality associated with the webpage.

This is the basic structure of our navbar using HTML.

Step 2 (CSS Code):

No custom CSS thanks to Tailwind!



 No custom CSS thanks to Tailwind!


Step 3 (JavaScript Code):

Finally, we need to create a function in JavaScript.

Let's break it down step by step:

1. document.addEventListener('DOMContentLoaded', function () { ... });

  • This line adds an event listener to the document object, which represents the entire HTML document.
  • The event being listened for is 'DOMContentLoaded', which fires when the HTML document has been fully loaded and parsed.
  • When 'DOMContentLoaded' occurs, the provided function inside the curly braces { ... } will be executed. This ensures that the JavaScript code runs after the HTML content has loaded, preventing any issues with accessing HTML elements that might not be available yet.

2. const button = document.getElementById('navbar-toggle');

  • This line selects an HTML element with the ID 'navbar-toggle' and assigns it to a JavaScript variable named button.
  • Presumably, 'navbar-toggle' represents a button or element that the user can click to trigger some action.

3. const menu = document.getElementById('navbar-default');

  • Similarly, this line selects an HTML element with the ID 'navbar-default' and assigns it to a JavaScript variable named menu.
  • 'navbar-default' represents the navigation menu that you want to show or hide when the button is clicked.

4. button.addEventListener('click', function () { ... });

  • Here, an event listener is added to the button element.
  • The event being listened for is 'click,' which occurs when the user clicks the button.
  • When the button is clicked, the provided function inside the curly braces { ... } will be executed.

5. menu.classList.toggle('hidden');

  • Inside the click event handler function, this line toggles a CSS class called 'hidden' on the menu element.
  • The classList property allows you to manipulate the classes of an HTML element.
  • .toggle('hidden') adds the 'hidden' class to the element if it doesn't have it, and removes it if it's already present. This effectively toggles the visibility of the menu.

Create a JavaScript file with the name of script.js and paste the given codes into your JavaScript file and make sure it's linked properly to your HTML document, so that the scripts are executed on the page. Remember, you’ve to create a file with .js extension.

document.addEventListener('DOMContentLoaded', function () {
  const button = document.getElementById('navbar-toggle');
  const menu = document.getElementById('navbar-default');

  button.addEventListener('click', function () {

Final Output:

Tailwind CSS Navbar Tutorial for Beginners.gif


In the fast-paced world of web development, the importance of a well-designed navbar cannot be overstated. It serves as a guiding beacon for users, helping them navigate through the digital landscape with ease. With Tailwind CSS, creating a simple and responsive navbar becomes an enjoyable task, allowing you to focus on what truly matters: delivering an exceptional user experience.

Throughout this tutorial, we've explored the fundamental steps of building a navbar, from setting up your project to customizing it to your heart's content. Remember that simplicity and usability should be at the forefront of your design philosophy. By implementing the best practices and leveraging Tailwind CSS's power, you can create a navbar that not only looks great but also enhances the functionality of your website.

As you continue on your web development journey, keep experimenting, stay curious, and don't hesitate to push the boundaries of your creativity. Your newfound skills in crafting user-friendly navbars will undoubtedly contribute to the success of your web projects. So, go ahead, implement what you've learned, and craft navbars that leave a lasting impression on your users. Happy coding!

That’s a wrap!

I hope you enjoyed this post. Now, with these examples, you can create your own amazing page.

Did you like it? Let me know in the comments below 🔥 and you can support me by buying me a coffee.

And don’t forget to sign up to our email newsletter so you can get useful content like this sent right to your inbox!

Faraz 😊

End of the article

Subscribe to my Newsletter

Get the latest posts delivered right to your inbox

Latest Post