Menu

How TO – Hover Tabs


Previous


Next

Learn how to change tabs on hover, with CSS and JavaScript.


Hover Tabs

Move the mouse over one of the menu buttons to show the tab content:





Hover Tabs

Move the mouse over a button inside the tabbed menu:



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

<!DOCTYPE html>
<html>
<head>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<style>
* {box-sizing: border-box}
body {font-family: “Lato”, sans-serif;}

/* Style the tab */
.tab {
float: left;
border: 1px solid #ccc;
background-color: #f1f1f1;
width: 30%;
height: 300px;
}

/* Style the buttons inside the tab */
.tab button {
display: block;
background-color: inherit;
color: black;
padding: 22px 16px;
width: 100%;
border: none;
outline: none;
text-align: left;
cursor: pointer;
font-size: 17px;
}

/* Change background color of buttons on hover */
.tab button:hover {
background-color: #ddd;
}

/* Create an active/current “tab button” class */
.tab button.active {
background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
float: left;
padding: 0px 12px;
border: 1px solid #ccc;
width: 70%;
border-left: none;
height: 300px;
display: none;
}

/* Clear floats after the tab */
.clearfix::after {
content: “”;
clear: both;
display: table;
}
</style>
</head>
<body>

<h2>Hover Tabs</h2>
<p>Move the mouse over a button inside the tabbed menu:</p>

<div>
<button onmouseover=”openCity(event, ‘London’)”>London</button>
<button onmouseover=”openCity(event, ‘Paris’)”>Paris</button>
<button onmouseover=”openCity(event, ‘Tokyo’)”>Tokyo</button>
</div>

<div id=”London”>
<h3>London</h3>
<p>London is the capital city of England.</p>
</div>

<div id=”Paris”>
<h3>Paris</h3>
<p>Paris is the capital of France.</p>
</div>

<div id=”Tokyo”>
<h3>Tokyo</h3>
<p>Tokyo is the capital of Japan.</p>
</div>

<div></div>

<script>
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName(“tabcontent”);
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = “none”;
}
tablinks = document.getElementsByClassName(“tablinks”);
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(” active”, “”);
}
document.getElementById(cityName).style.display = “block”;
evt.currentTarget.className += ” active”;
}
</script>

</body>
</html>

Create Hoverable Vertical Tabs

Step 1) Add HTML:

Example

<div class=”tab”>
  <button class=”tablinks” onmouseover=”openCity(event, ‘London’)”>London</button>
  <button class=”tablinks” onmouseover=”openCity(event, ‘Paris’)”>Paris</button>
  <button class=”tablinks” onmouseover=”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 the specific tab content. All <div> elements with class="tabcontent" are hidden by default (with CSS & JS) – when the user move the mouse over a button – it will open the tab content that “matches” this button.


Step 2) Add CSS:

Style the buttons and the tab content:

Example

/* Style the tab */
.tab {
  float: left;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
  width: 30%;
  height: 300px;
}

/* Style the buttons that are 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;
}

/* Change background color of buttons on hover */
.tab button:hover {
  background-color: #ddd;
}

/* Create an active/current “tab button” class */
.tab button.active {
  background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
  float: left;
  padding: 0px 12px;
  border: 1px solid #ccc;
  width: 70%;
  border-left: none;
  height: 300px;
  display: none;
}

Step 3) Add JavaScript:

Example

<!DOCTYPE html>
<html>
<head>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<style>
* {box-sizing: border-box}
body {font-family: “Lato”, sans-serif;}

/* Style the tab */
.tab {
float: left;
border: 1px solid #ccc;
background-color: #f1f1f1;
width: 30%;
height: 300px;
}

/* Style the buttons inside the tab */
.tab button {
display: block;
background-color: inherit;
color: black;
padding: 22px 16px;
width: 100%;
border: none;
outline: none;
text-align: left;
cursor: pointer;
font-size: 17px;
}

/* Change background color of buttons on hover */
.tab button:hover {
background-color: #ddd;
}

/* Create an active/current “tab button” class */
.tab button.active {
background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
float: left;
padding: 0px 12px;
border: 1px solid #ccc;
width: 70%;
border-left: none;
height: 300px;
display: none;
}

/* Clear floats after the tab */
.clearfix::after {
content: “”;
clear: both;
display: table;
}
</style>
</head>
<body>

<h2>Hover Tabs</h2>
<p>Move the mouse over a button inside the tabbed menu:</p>

<div>
<button onmouseover=”openCity(event, ‘London’)”>London</button>
<button onmouseover=”openCity(event, ‘Paris’)”>Paris</button>
<button onmouseover=”openCity(event, ‘Tokyo’)”>Tokyo</button>
</div>

<div id=”London”>
<h3>London</h3>
<p>London is the capital city of England.</p>
</div>

<div id=”Paris”>
<h3>Paris</h3>
<p>Paris is the capital of France.</p>
</div>

<div id=”Tokyo”>
<h3>Tokyo</h3>
<p>Tokyo is the capital of Japan.</p>
</div>

<div></div>

<script>
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName(“tabcontent”);
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = “none”;
}
tablinks = document.getElementsByClassName(“tablinks”);
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(” active”, “”);
}
document.getElementById(cityName).style.display = “block”;
evt.currentTarget.className += ” active”;
}
</script>

</body>
</html>


Previous


Next

Scroll to Top