Dynamic Tab Menu With jQuery - Metro Tabs
File Size: | 1.94 KB |
---|---|
Views Total: | 2157 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

Metro Tabs makes uses of jQuery and plain HTML/CSS to create a fashion, dynamic, easy-to-style tab menu from Javascript arrays.
How to use it:
1. Create the html structure for the tab menu.
<div class='container'> <div class='n'>Metro Tabs</div> <div class='p'> <div class='tc'></div> <div class='m'></div> </div> </div>
2. The basic CSS styles.
.container { background-color: #1a1a1a; box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.3); border: 1px solid #333333; border-radius: 4px; padding: 3vh; position: absolute; transform: translate(-50%, -50%); top: 50%; left: 50%; } .container .n { margin-bottom: 2vh; color: #262626; font-size: 26px; } .container .p { box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); background: linear-gradient(#333333, #1a1a1a); border-radius: inherit; padding: 3vh; } .container .p .tc { display: flex; } .container .p .t { font-size: 16px; transition: background 0.1s, padding 0.5s; background: #1a1a1a; color: #666666; padding: 2vh; border-bottom: 1px solid #666666; cursor: pointer; } .container .p .t:nth-child(1) { border-top-left-radius: 4px; } .container .p .t:nth-last-child(1) { border-top-right-radius: 4px; } .container .p .ta { transition: background 0.1s, padding 0.5s; background: linear-gradient(#404040, transparent); border-bottom: 0; margin-bottom: 2px; color: #999999; padding: 2vh 3vh 2vh 3vh; } .container .p .m { display: block; padding: 2vh; background: linear-gradient(transparent, #1a1a1a); border-bottom: 1px solid #666666; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .container .p .m .ip { display: none; width: 100%; } .container .p .m .ip .ti { color: #999999; background-color: rgba(255, 255, 255, 0.1); padding: 2vh; box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); } .container .p .m .ip .in { color: #666666; border: 1px solid rgba(255, 255, 255, 0.1); margin-top: 1.5vh; padding: 2vh; font-size: 14px; }
3. Insert the needed jQuery JavaScript library into the page.
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"> </script>
4. Define the data (tabs, title, content) for the tab menu.
tabs = ["Tab 1","Tab 2","Tab 3"] title = ["Title 1","Title 2","Title 3"] info = ["Menu Content 1", "Menu Content 2", "Menu Content 3" ]
5. Set the space after the last tab.
gap = 1.25
6. The main JavaScript (jQuery script) to activate the tab menu.
init = () => { gTabs() $(".t:nth-child(1)").addClass("ta") $(".ti").text(title[0]) $(".in").text(info[0]) $(".ip:nth-child(1)").fadeIn(400) } gTabs = () => { for (i=0; i<tabs.length; i++) { $(".tc").append("<div class='t'></div>") } $(".t").each(function(i) { $(this).text(tabs[i]) $(".m").append("<div class='ip'><div class='ti'></div><div class='in'></div></div>") }) dWidth() } dWidth = () => { var TCW = $(".tc").width() $(".in").css("width", TCW*gap+"px") } init() $(".t").click(function() { $(".t").removeClass("ta") $(this).addClass("ta") $(".ip").fadeOut(200).delay(200) var cS = $(this).text() for (i=0; i<tabs.length; i++) { if (cS == tabs[i]) { p = i b = i+1 } } $(".ip:nth-child("+b+") .ti").text(title[p]) $(".ip:nth-child("+b+") .in").text(info[p]) $(".ip:nth-child("+b+")").fadeIn(200) })
This awesome jQuery plugin is developed by vinnywoo. For more Advanced Usages, please check the demo page or visit the official website.