How TO – Tab Gallery


Previous


Next

Learn how to create a tabbed image gallery with CSS and JavaScript.

Tab Gallery

Click on an image to expand it:

Example

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

body {
margin: 0;
font-family: Arial;
}

/* The grid: Four equal columns that floats next to each other */
.column {
float: left;
width: 25%;
padding: 10px;
}

/* Style the images inside the grid */
.column img {
opacity: 0.8;
cursor: pointer;
}

.column img:hover {
opacity: 1;
}

/* Clear floats after the columns */
.row:after {
content: “”;
display: table;
clear: both;
}

/* The expanding image container */
.container {
position: relative;
display: none;
}

/* Expanding image text */
#imgtext {
position: absolute;
bottom: 15px;
left: 15px;
color: white;
font-size: 20px;
}

/* Closable button inside the expanded image */
.closebtn {
position: absolute;
top: 10px;
right: 15px;
color: white;
font-size: 35px;
cursor: pointer;
}
</style>
</head>
<body>

<div style=”text-align:center”>
<h2>Tabbed Image Gallery</h2>
<p>Click on the images below:</p>
</div>

<!– The four columns –>
<div>
<div>
<img src=”img_nature.jpg” alt=”Nature” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_snow.jpg” alt=”Snow” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_mountains.jpg” alt=”Mountains” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_lights.jpg” alt=”Lights” style=”width:100%” onclick=”myFunction(this);”>
</div>
</div>

<div>
<span onclick=”this.parentElement.style.display=’none'”>&times;</span>
<img id=”expandedImg” style=”width:100%”>
<div id=”imgtext”></div>
</div>

<script>
function myFunction(imgs) {
var expandImg = document.getElementById(“expandedImg”);
var imgText = document.getElementById(“imgtext”);
expandImg.src = imgs.src;
imgText.innerHTML = imgs.alt;
expandImg.parentElement.style.display = “block”;
}
</script>

</body>
</html>

Create a Tab Gallery

Step 1) Add HTML:

Example

<!– The grid: four columns –>
<div class=”row”>
  <div class=”column”>
    <img src=”img_nature.jpg” alt=”Nature” onclick=”myFunction(this);”>
  </div>
  <div class=”column”>
    <img src=”img_snow.jpg” alt=”Snow” onclick=”myFunction(this);”>
  </div>
  <div class=”column”>
    <img src=”img_mountains.jpg” alt=”Mountains” onclick=”myFunction(this);”>
  </div>
  <div class=”column”>
    <img src=”img_lights.jpg” alt=”Lights” onclick=”myFunction(this);”>
  </div>
</div>

<!– The expanding image container –>
<div class=”container”>
  <!– Close the image –>
  <span onclick=”this.parentElement.style.display=’none'” class=”closebtn”>&times;</span>

  <!– Expanded image –>
  <img id=”expandedImg” style=”width:100%”>

  <!– Image text –>
  <div id=”imgtext”></div>
</div>

Use images to expand the specific image. The image that is clicked on inside the column, is shown in a container below the columns.


Step 2) Add CSS:

Create four columns and style the images:

Example

/* The grid: Four equal columns that floats next to each other */
.column {
  float: left;
  width: 25%;
  padding: 10px;
}

/* Style the images inside the grid */
.column img {
  opacity: 0.8;
  cursor: pointer;
}

.column img:hover {
  opacity: 1;
}

/* Clear floats after the columns */
.row:after {
  content: “”;
  display: table;
  clear: both;
}

/* The expanding image container (positioning is needed to position the close button and the text) */
.container {
  position: relative;
  display: none;
}

/* Expanding image text */
#imgtext {
  position: absolute;
  bottom: 15px;
  left: 15px;
  color: white;
  font-size: 20px;
}

/* Closable button inside the image */
.closebtn {
  position: absolute;
  top: 10px;
  right: 15px;
  color: white;
  font-size: 35px;
  cursor: pointer;
}

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 {
margin: 0;
font-family: Arial;
}

/* The grid: Four equal columns that floats next to each other */
.column {
float: left;
width: 25%;
padding: 10px;
}

/* Style the images inside the grid */
.column img {
opacity: 0.8;
cursor: pointer;
}

.column img:hover {
opacity: 1;
}

/* Clear floats after the columns */
.row:after {
content: “”;
display: table;
clear: both;
}

/* The expanding image container */
.container {
position: relative;
display: none;
}

/* Expanding image text */
#imgtext {
position: absolute;
bottom: 15px;
left: 15px;
color: white;
font-size: 20px;
}

/* Closable button inside the expanded image */
.closebtn {
position: absolute;
top: 10px;
right: 15px;
color: white;
font-size: 35px;
cursor: pointer;
}
</style>
</head>
<body>

<div style=”text-align:center”>
<h2>Tabbed Image Gallery</h2>
<p>Click on the images below:</p>
</div>

<!– The four columns –>
<div>
<div>
<img src=”img_nature.jpg” alt=”Nature” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_snow.jpg” alt=”Snow” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_mountains.jpg” alt=”Mountains” style=”width:100%” onclick=”myFunction(this);”>
</div>
<div>
<img src=”img_lights.jpg” alt=”Lights” style=”width:100%” onclick=”myFunction(this);”>
</div>
</div>

<div>
<span onclick=”this.parentElement.style.display=’none'”>&times;</span>
<img id=”expandedImg” style=”width:100%”>
<div id=”imgtext”></div>
</div>

<script>
function myFunction(imgs) {
var expandImg = document.getElementById(“expandedImg”);
var imgText = document.getElementById(“imgtext”);
expandImg.src = imgs.src;
imgText.innerHTML = imgs.alt;
expandImg.parentElement.style.display = “block”;
}
</script>

</body>
</html>


Previous


Next

Scroll to Top