Make CSS Tab Menu Without JavaScript

 To improve user experience on the web, sometimes it is useful to add some functionalities such as menu, and one type of menu is the "tab menu". 

Tab menu is used in a way that it sorts content, and when the topic tab is click, content under that topic is shown.

An example is below:


tab 1 tab 2 tab 3

Content to tab 1

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed elit arcu, tincidunt at elit sed, efficitur sagittis mauris. Pellentesque vulputate neque non quam posuere fermentum.

Content to tab 2

Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed maximus ex ex, eu porttitor arcu pretium eget. Nulla sed elementum nunc. 

Content to tab 3

Sed vulputate odio a bibendum pellentesque. Nullam purus sem, accumsan vitae efficitur nec, fermentum non metus.

Problem

The problem is whenever we click a tab, the window will jump down if there is more content than the window can hold, and when this happens, we will have to scroll back up to click the other tabs to continue using this tab menu.

Solution

One solution is to move the tab section to the bottom of the content area, set certain height and "overflow: scroll" for the content area .

Like this:

Content to tab 1

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed elit arcu, tincidunt at elit sed, efficitur sagittis mauris. Pellentesque vulputate neque non quam posuere fermentum.Cras hendrerit fringilla felis, feugiat semper orci eleifend a. Vivamus pharetra ante vel nulla cursus, quis tristique leo tristique. Nunc pharetra lorem erat. Mauris gravida, odio in laoreet convallis, nibh sapien convallis ligula, sit amet convallis orci urna ut mauris. Aenean efficitur vitae ligula finibus luctus.

Content to tab 2

Suspendisse augue turpis, vestibulum vel ipsum eu, feugiat cursus metus. Donec tempus risus lorem, id blandit ipsum rhoncus in. Cras ac elit ligula. et malesuada fames ac ante ipsum primis in faucibus. Sed maximus ex ex, eu porttitor arcu pretium eget. Nulla sed elementum nunc. 

Content to tab 3

Sed vulputate odio a bibendum pellentesque. Nullam purus sem, accumsan vitae efficitur nec, fermentum non metus.Ut sit amet risus viverra diam venenatis pretium. Suspendisse dignissim ex id sodales malesuada. In gravida fermentum nunc a consectetur.

tab 1 tab 2 tab 3

Sample code

<style>
.wrap{
  height:200px;
  overflow:scroll;
  }
.tab div {
  display: none;
}

.tab div:target {
  border:1px red solid;
  display: block;
}
</style>
<div class="tab">

<div id="l4" class = "wrap">
  <h3>Content to tab 1</h3>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed elit arcu, 
  tincidunt at elit sed, efficitur sagittis mauris. Pellentesque vulputate neque non 
  quam posuere fermentum.Cras hendrerit fringilla felis, feugiat semper orci eleifend a. 
  Vivamus pharetra ante vel nulla cursus, quis tristique leo tristique. Nunc pharetra lorem 
  erat. Mauris gravida, odio in laoreet convallis, nibh sapien convallis ligula, sit amet
  convallis orci urna ut mauris. Aenean efficitur vitae ligula finibus luctus. </p>
</div>

<div id="l5" class = "wrap">
  <h3>Content to tab 2</h3>
  <p>Suspendisse augue turpis, vestibulum vel ipsum eu, feugiat cursus metus. Donec 
  tempus risus lorem, id blandit ipsum rhoncus in. Cras ac elit ligula. et malesuada fames 
  ac ante ipsum primis in faucibus. Sed maximus ex ex, eu porttitor arcu pretium eget. 
  Nulla sed elementum nunc.&nbsp;</p>
</div>

<div id="l6" class = "wrap">
  <h3>Content to tab 3</h3>
  <p>Sed vulputate odio a bibendum pellentesque. Nullam purus sem, accumsan vitae
  efficitur nec, fermentum non metus.Ut sit amet risus viverra diam venenatis pretium. 
  Suspendisse dignissim ex id sodales malesuada. In gravida fermentum nunc a consectetur.</p>
</div>
<a href="#l4">tab 1</a>   
<a href="#l5">tab 2</a>
<a href="#l6">tab 3</a>
</div>

How to Use This Tab Menu Component with WordPress

  1. In the WP post editor, add a custom HTML block on the top of the post.
  2. Copy the <style>...</style> code and paste it in the block from the 1st step.
  3. Add the tab menu html code <div class="tab" ... </div> to where you want to show the tab menu .
  4. Done

Comments

Popular posts from this blog

How to Make A Reusable Image Slideshow HTML Component With Vanilla JavaScript

HTML Tags and Inline CSS that Work In Plotly.js Title

How to Type Spaces In HTML Input And Display In the Browser