Yeah I don't really know how to explain this, so here's a diagram of what I want. Basically I want a grid of "items" that's responsive (simple with a grid or flexbox). However I also want it to display a description in a row underneath the currently selected item.
I've got a way to do that but it's not very responsive or extensible (I gotta shift stuff around in the HTML every time I need to insert a new item, which I do a lot).
Here's what I'm currently working with:
<!-- Row 1 -->
<ul class="row">
<li><a class="tablinks" onclick="openCity(event, 'description1')>Item 1</a></li>
<li><a class="tablinks" onclick="openCity(event, 'description2')>Item 2</a></li>
<li><a class="tablinks" onclick="openCity(event, 'description3')>Item 3</a></li>
</ul>
<div id="description1" class="tabcontent">
<span onclick="this.parentElement.style.display='none';">Description 1</span>
</div>
<div id="description2" class="tabcontent">
<span onclick="this.parentElement.style.display='none';">Description 2</span>
</div>
<div id="description3" class="tabcontent">
<span onclick="this.parentElement.style.display='none';">Description 3</span>
</div>
<!-- Row 2 -->
<ul class="row">
<li><a class="tablinks" onclick="openCity(event, 'description4')>Item 4</a></li>
<li><a class="tablinks" onclick="openCity(event, 'description5')>Item 5</a></li>
</ul>
<div id="description4" class="tabcontent">
<span onclick="this.parentElement.style.display='none';">Description 4</span>
</div>
<div id="description5" class="tabcontent">
<span onclick="this.parentElement.style.display='none';">Description 5</span>
</div>
<!-- onclick script -->
<script>
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
}
function scrollWin() {
window.scrollTo(0, 0);
}
</script>
What I want is just something similar below, just so I don't have to shuffle stuff around in the html.
<div class="wrapper">
<div class="item" onclick="showDesc(event, 'description1'>Item 1</div>
<div class="item" onclick="showDesc(event, 'description2'>Item 2</div>
<div class="item" onclick="showDesc(event, 'description3'>Item 3</div>
<div class="item" onclick="showDesc(event, 'description4'>Item 4</div>
<div class="item" onclick="showDesc(event, 'description5'>Item 5</div>
</div>
<div if="description1" class="description">Description 1</div>
<div if="description2" class="description">Description 2</div>
<div if="description3" class="description">Description 3</div>
<div if="description4" class="description">Description 4</div>
<div if="description5" class="description">Description 5</div>
I don't really care if it uses grid or flexbox or whatever. As long as it works.