0

I'm trying to create navigation using Bootstrap 5, so that I have 3 columns of content. The first column contains a nav-list. The second column contains an additional nav-list, and in the third column items are shown to correspond with the active item of the second column list. Ultimately, the overall nav will be dropped into a megamenu, and would ideally be interacted entirely by mouseovers, not clicks.

I've put together a pen here:

https://codepen.io/phil303/pen/yLxbzWj

<div class="container py-8 text-center">
  <div class="row">
    
      <div class="col-4">
          <!-- First Column List -->
          <ul class="nav nav-tabs nav-tabs-basic flex-column">
              <li class="nav-item"> 
                  <a class="nav-link active" data-bs-toggle="tab" href="#first-1-1">First Col #1</a> 
              </li>
              <li class="nav-item"> 
                  <a class="nav-link" data-bs-toggle="tab" href="#first-1-2">First Col #2</a> 
              </li>
              <li class="nav-item"> 
                  <a class="nav-link" data-bs-toggle="tab" href="#first-1-3">First Col #3</a> 
            </li>
          </ul><!-- /.nav-tabs -->
      </div>
    
      <div class="col-4">
          <!-- Middle Column List -->
          <div class="tab-content mt-0">
              <div class="tab-pane fade show active" id="first-1-1">
                  <ul class="nav nav-tabs nav-tabs-basic flex-column">
                      <li class="nav-item"> 
                          <a class="nav-link active" data-bs-toggle="tab" href="#middle-1-1">Middle Col #1_1</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-1-2">Middle Col #1_2</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-1-3">Middle Col #1_3</a> 
                      </li>
                  </ul><!-- /.nav-tabs -->
              </div><!--/.tab-pane -->
              <div class="tab-pane fade" id="first-1-2">
                  <ul class="nav nav-tabs nav-tabs-basic flex-column">
                      <li class="nav-item"> 
                          <a class="nav-link active" data-bs-toggle="tab" href="#middle-2-1">Middle Col #2_1</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-2-2">Middle Col #2_2</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-2-3">Middle Col #2_3</a> 
                      </li>
                  </ul><!-- /.nav-tabs -->
              </div><!--/.tab-pane -->
              <div class="tab-pane fade" id="first-1-3">
                  <ul class="nav nav-tabs nav-tabs-basic flex-column">
                      <li class="nav-item"> 
                          <a class="nav-link active" data-bs-toggle="tab" href="#middle-3-1">Middle Col #3_1</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-3-2">Middle Col #3_2</a> 
                      </li>
                      <li class="nav-item"> 
                          <a class="nav-link" data-bs-toggle="tab" href="#middle-3-3">Middle Col #3_3</a> 
                      </li>
                  </ul><!-- /.nav-tabs -->
              </div><!--/.tab-pane -->
          </div><!-- /.tab-content -->
      </div><!--/column -->

      <div class="col-4">
          <!-- Last Column Items -->
          <div class="tab-content mt-0">
              <div class="tab-pane fade show active" id="middle-1-1">
                  <p>Last Col #1_1_1</p>
              </div>
              <div class="tab-pane fade" id="middle-1-2">
                  <p>Last Col #1_2_1</p>
              </div>
              <div class="tab-pane fade" id="middle-1-3">
                  <p>Last Col #1_3_1</p>
              </div>
              <div class="tab-pane fade" id="middle-2-1">
                  <p>Last Col #2_1_1</p>
              </div>
              <div class="tab-pane fade" id="middle-2-2">
                  <p>Last Col #2_2_1</p>
              </div>
              <div class="tab-pane fade" id="middle-2-3">
                  <p>Last Col #2_3_1</p>
              </div>
              <div class="tab-pane fade" id="middle-3-1">
                  <p>Last Col #3_1_1</p>
              </div>
              <div class="tab-pane fade" id="middle-3-2">
                  <p>Last Col #3_2_1</p>
              </div>
              <div class="tab-pane fade" id="middle-3-3">
                  <p>Last Col #3_3_1</p>
              </div>
          </div><!-- /.tab-content -->
      </div><!--/column -->
    
  </div><!--/row -->
</div><!--/container -->

It's working, except when I try to add the content for the second and third list items in the first column (e.g. First Col #2 > Middle Col #2_1). If I simply add these with the first list items, when these are clicked, they are added beneath the first list items (within the last column).

I presume that I need script to hide the active items in the last column, when user clicks on another item within the list. I've had a look at the docs but my JS is just too weak to even know where to begin.

Any help on this greatly appreciated - even if you can just point me in the right direction would be wonderful. Thanks

0 Answers0