How to create: vertical tab pages

Learn how to use CSS and JavaScript to create vertical tab page menus.

Vertical tab pages

Tab pages are very suitable for single-page web applications or web pages that can display different themes.

London

London is the capital city of England.

Paris

Paris is the capital of France.

Tokyo

Tokyo is the capital of Japan.

Try It Yourself

Create a vertically scrollable tab that can be switched

Step 1 - Add HTML:

<div class="tab">
  <button class="tablinks" onclick="openCity(event, 'London')">London</button>
  <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
  <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
</div>
<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>
<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p>
</div>
<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>

Create buttons to open specific tab content. All with class="tabcontent" of <div> Elements are all hidden by default (through CSS and JS). When the user clicks a button, it will open the tab content that matches the button.

Step 2 - Add CSS:

Set the style for the button and the tab content:

* {box-sizing: border-box}
/* Style the tab */
.tab {
  float: left;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
  width: 30%;
  height: 300px;
}
/* Set the style for the button used to open the tab content */
.tab button {
  display: block;
  background-color: inherit;
  color: black;
  padding: 22px 16px;
  width: 100%;
  border: none;
  outline: none;
  text-align: left;
  cursor: pointer;
  transition: 0.3s;
}
/* Change the background color of the button when hovering */
.tab button:hover {
  background-color: #ddd;
}
/* Create the "active/current" tab button class */
.tab button.active {
  background-color: #ccc;
}
/* Set the style of the tab page content */
.tabcontent {
  float: left;
  padding: 0px 12px;
  border: 1px solid #ccc;
  width: 70%;
  border-left: none;
  height: 300px;
}

Step 3 - Add JavaScript:

function openCity(evt, cityName) {
  // Declare all variables
  var i, tabcontent, tablinks;
  // Get all elements with class="tabcontent" and hide them
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }
  // Get all elements with class="tablinks" and remove the "active" class
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" active", "");
  }
  // Show the current tab page and add the "active" class to the link that opens the tab page
  document.getElementById(cityName).style.display = "block";
  evt.currentTarget.className += " active";
}

Try It Yourself

Related Pages

Tutorial:How to Create Horizontal Tabs