Vanilla JavaScript Tabs with visibility hidden/visible
A Pen by Brian Han on CodePen.
###Reference Links (MDN - JS)
<h1>JavaScript Tabs (<a href="https://gist.github.com/thisisbrianhan/f99b48ad868afe4d0dbc">gist</a>)</h1> | |
<div class="border"> | |
<ul> | |
<li><a href="#" id="link-1">link 1</a></li> | |
<li><a href="#" id="link-2">link 2</a></li> | |
<li><a href="#" id="link-3">link 3</a></li> | |
</ul> | |
<div id="content-1" class="active">content-1</div> | |
<div id="content-2">content-2</div> | |
<div id="content-3">content-3</div> | |
</div> | |
<h2>Reference Links</h2> | |
<ul> | |
<li><a href="https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a></li> | |
<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for..in</a></li> | |
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault">event.preventDefault()</a></li> | |
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Element.classList"></a>Element.classList</li> | |
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Element.id"></a>Element.id</li> | |
</ul> |
/*document.addEventListener('DOMContentLoaded', function(){ | |
console.log('DOM is fully loaded and parsed');*/ | |
var tabs = { | |
sample1: document.getElementById('link-1'), | |
sample2: document.getElementById('link-2'), | |
sample3: document.getElementById('link-3') | |
} | |
var content = { | |
one: document.getElementById("content-1"), | |
two: document.getElementById("content-2"), | |
three: document.getElementById("content-3") | |
} | |
for (tab in tabs) { | |
// console.log(tabs[tab]); | |
tabs[tab].addEventListener('click', function(event) { | |
event.preventDefault(); | |
var $this = this; | |
clearSelected(); | |
$this.classList.add("selected"); | |
// console.log(this.id); | |
clearActive(); | |
if ($this.id === "link-1") { | |
content.one.classList.add("active"); | |
} else if ($this.id === "link-2") { | |
content.two.classList.add("active"); | |
} else { | |
content.three.classList.add("active"); | |
} | |
}); | |
} | |
function clearSelected() { | |
for (tab in tabs) { | |
tabs[tab].classList.remove("selected"); | |
} | |
} | |
function clearActive() { | |
for (element in content) { | |
content[element].classList.remove("active"); | |
} | |
} | |
/*});*/ |
.border { | |
border: 1px solid black; | |
ul { | |
display: flex; | |
list-style-type: none; | |
li { margin-left: 10px; } | |
} | |
} | |
a { | |
border: 1px solid transparent; | |
&.selected { | |
border: 1px solid black; | |
} | |
} | |
#content-1, | |
#content-2, | |
#content-3 { | |
visibility: hidden; | |
&.active { | |
background-color: orange; | |
visibility: visible !important; | |
} | |
} |