Complete Code For Creating Responsive Animated Tabs Using CSS.
<!DOCTYPE html> <html> <head> <title>How Do I Create Responsive Animated Tabs Using CSS</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/> </head> <style> body { background: lightblue; font-family: "Roboto Light"; } .tabs { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; height: 250px; background: #f5f5f5; padding: 20px 30px; overflow: hidden; box-shadow: 5px 10px 5px #ccc; } .tabs .tab-header { height: 60px; display: flex; align-items: center; } .tab-header { background: black; } .tabs .tab-header > div { width: calc(100% / 4); text-align: center; color: white; font-weight: 600; cursor: pointer; font-size: 30px; text-transform: uppercase; outline: none; } .tabs .tab-header > div > i { display: block; margin-bottom: 5px; } .tabs .tab-header > div.active { color: #00acee; } .tabs .tab-indicator { position: relative; width: calc(100% / 4); height: 5px; background: #00acee; left: 0px; border-radius: 5px; transition: all 500ms ease-in-out; } .tabs .tab-body { position: relative; height: calc(100% - 60px); padding: 10px 5px; border: 1px solid black; } .tabs .tab-body > div { position: absolute; top: -200%; opacity: 0; transform: scale(0.9); transition: opacity 500ms ease-in-out 0ms, transform 500ms ease-in-out 0ms; } .tabs .tab-body > div.active { top: 0px; opacity: 1; transform: scale(1); } </style> <body> <br/><br/> <div class="container"> <br> <div class="text-center"> <h1 id="color" style="color: black;">Create Responsive Animated Tabs Using CSS</h1> </div> <div class="tabs"> <div class="tab-header"> <div class="active"> Tab1 </div> <div> Tab2 </div> <div> Tab3 </div> <div> Tab4 </div> </div> <div class="tab-indicator"></div> <div class="tab-body"> <div class="active"> <h2>This is Tab1 section</h2> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error neque saepe commodi blanditiis fugiat nisi aliquam ratione porro quibusdam in, eveniet accusantium cumque. Dolore officia reprehenderit perferendis quod libero omnis.</p> </div> <div> <h2>This is Tab2 section</h2> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi minus exercitationem vero, id autem fugit assumenda a molestiae numquam at, quisquam cumque. Labore eligendi perspiciatis quia incidunt quaerat ut ducimus?</p> </div> <div> <h2>This is Tab3 section</h2> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi minus exercitationem vero, id autem fugit assumenda a molestiae numquam at, quisquam cumque. Labore eligendi perspiciatis quia incidunt quaerat ut ducimus?</p> </div> <div> <h2>This is Tab4 section</h2> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi minus exercitationem vero, id autem fugit assumenda a molestiae numquam at, quisquam cumque. Labore eligendi perspiciatis quia incidunt quaerat ut ducimus?</p> </div> </div> </div> </div> </body> </html> <script> let tabHeader = document.getElementsByClassName("tab-header")[0]; let tabIndicator = document.getElementsByClassName("tab-indicator")[0]; let tabBody = document.getElementsByClassName("tab-body")[0]; let tabsPane = tabHeader.getElementsByTagName("div"); for (let i = 0; i < tabsPane.length; i++) { tabsPane[i].addEventListener("click", function () { tabHeader.getElementsByClassName("active")[0].classList.remove("active"); tabsPane[i].classList.add("active"); tabBody.getElementsByClassName("active")[0].classList.remove("active"); tabBody.getElementsByTagName("div")[i].classList.add("active"); tabIndicator.style.left = `calc(calc(100% / 4) * ${i})`; }); } </script>