How to Create Tabs with CSS and JavaScript

Are you looking to enhance the user experience on your website by adding interactive tabs? Tabs are a popular and effective way to organize content and make it easily accessible to your visitors. In this article, we will guide you through the process of creating tabs using CSS and JavaScript. By following these steps, you can add stylish and functional tabs to your website and provide a seamless browsing experience.

1. Introduction

Tabs are a user interface element that allows users to navigate between different sections of content within a single page. They are commonly used in websites to organize information and present it in a visually appealing manner. With the combination of CSS and JavaScript, you can create dynamic tabs that respond to user interactions.

2. HTML Structure

To create tabs, you need to set up the appropriate HTML structure. Each tab will consist of a tab header and its corresponding content. Here’s an example of the HTML structure for a basic tab layout:

<div class="tab-container">
  <div class="tab-header">
    <button class="tab-button active">Tab 1</button>
    <button class="tab-button">Tab 2</button>
    <button class="tab-button">Tab 3</button>
  <div class="tab-content">
    <div class="tab-panel active">
      Content for Tab 1
    <div class="tab-panel">
      Content for Tab 2
    <div class="tab-panel">
      Content for Tab 3

In this example, we have three tabs labeled as “Tab 1,” “Tab 2,” and “Tab 3.” The active tab is indicated by the “active” class. The content for each tab is placed inside separate div elements with the “tab-panel” class.

3. Styling the Tabs with CSS

Now that we have the HTML structure in place, let’s style the tabs using CSS. The following CSS code will give our tabs a clean and professional look:

/* Tab header styles */
.tab-header {
  display: flex;

.tab-button {
  padding: 10px 20px;
  background-color: #f2f2f2;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: all 0.3s ease;
} {
  border-bottom-color: #333;
  font-weight: bold;

/* Tab content styles */
.tab-content {
  border: 1px solid #333;
  padding: 20px;

.tab-panel {
  display: none;
} {
  display: block;

In this CSS code, we define the styles for the tab header and content. The display: flex property ensures that the tab buttons are displayed in a row. The active tab is highlighted by changing the border-bottom-color and font-weight properties. The display: none property is used to hide the inactive tab panels, while display: block is used to show the active tab panel.

4. Adding JavaScript Functionality

To make our tabs interactive, we need to add JavaScript functionality. The following JavaScript code will handle the tab switching when a user clicks on a tab button:

// Get all the tab buttons and tab panels
const tabButtons = document.querySelectorAll('.tab-button');
const tabPanels = document.querySelectorAll('.tab-panel');

// Add event listeners to each tab button
tabButtons.forEach((button, index) => {
  button.addEventListener('click', () => {
    // Remove the 'active' class from all buttons and panels
    tabButtons.forEach(button => button.classList.remove('active'));
    tabPanels.forEach(panel => panel.classList.remove('active'));

    // Add the 'active' class to the clicked button and corresponding panel

This JavaScript code selects all the tab buttons and tab panels using the respective CSS classes. It then adds click event listeners to each tab button. When a button is clicked, the code removes the ‘active’ class from all buttons and panels, and then adds the ‘active’ class to the clicked button and its corresponding panel.

5. Conclusion

In this article, we have learned how to create tabs using CSS and JavaScript. By following the steps outlined above, you can implement stylish and interactive tabs on your website. Tabs provide an efficient way to organize content and improve the user experience. Experiment with different styles and designs to match the overall look and feel of your website. Enhance your website’s navigation and make it more engaging for your visitors with dynamic tabs!


Can I use frameworks like Bootstrap to create tabs?

Yes, popular front-end frameworks like Bootstrap provide pre-built components for creating tabs. These frameworks offer a wide range of customization options and make it easier to implement tabs without writing extensive CSS and JavaScript code.

Can I have nested tabs within a tab panel?

While it is technically possible to have nested tabs, it can make the user experience complex and confusing. It is generally recommended to avoid nesting tabs and explore alternative ways to organize content if necessary.

Can I add animations to tab transitions?

Yes, you can enhance the tab switching experience by adding animations. CSS transitions and keyframe animations can be used to create smooth and visually appealing transitions between tabs.

Are there any accessibility considerations when using tabs?

When using tabs, it’s important to ensure accessibility for all users. Make sure to provide appropriate ARIA attributes, keyboard navigation support, and focus management to ensure that users with disabilities can navigate and interact with the tabs easily.

How can I customize the styling of the tabs to match my website’s design?

You can customize the styling of the tabs by modifying the CSS code provided in this article. Adjust the colors, fonts, and other properties to match your website’s design. You can also add additional CSS rules to further customize the appearance of the tabs.

Leave a Comment