Bootstrap 4 navbar tabs not activating tab content

12,420

Solution 1

You can use list groups (list-group) or tabs (nav-tabs) in Bootstrap 4.

Click the "run code snippet" button below to see an example with tabs:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<div class="container">
    <ul class="nav nav-tabs" id="myTab" role="tablist">
        <li class="nav-item">
            <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
        </li>
    </ul>
    <div class="tab-content" id="myTabContent">
        <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">home tab</div>
        <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">profile tab</div>
        <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">contact tab</div>
    </div>
</div>

Click the "run code snippet" button below to see a list group example:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

<div class="container">
    <div class="row">
        <div class="col-4">
            <div class="list-group" id="list-tab" role="tablist">
                <a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a>
                <a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a>
                <a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a>
                <a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a>
            </div>
        </div>
        <div class="col-8">
            <div class="tab-content" id="nav-tabContent">
                <div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">home home home</div>
                <div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">profile profile profile</div>
                <div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">messages messages messages</div>
                <div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">settings settings settings</div>
            </div>
        </div>
    </div>
</div>

Solution 2

Tabs work similar in Bootstrap 3 and 4, and data-toggle="tab" is still used. Instead of using the in class to set the active tab-pane, the show class is now used in Bootstrap 4.

If you were unable to activate the tab content from the navbar, the reason is most likely the same as explained here. The nav class must be included in the navbar-nav in order for the tab navigation to work.

Demo: https://www.codeply.com/go/7pjdI2heSU

<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Augma Home</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
        <div class="navbar-nav nav">
            <a class="nav-item nav-link active" data-toggle="tab" href="#home">Home</a>
            <a class="nav-item nav-link" data-toggle="tab" href="#superman">Superman</a>
            <a class="nav-item nav-link" data-toggle="tab" href="#batman">Batman</a>
            <a class="nav-item nav-link" data-toggle="tab" href="#flash">Flash</a>
            <a class="nav-item nav-link" data-toggle="tab" href="#kidflash">Kid Flash</a>
        </div>
    </div>
</nav>
Share:
12,420

Related videos on Youtube

Blue
Author by

Blue

Updated on October 09, 2022

Comments

  • Blue
    Blue over 1 year

    I'm in the process of learning a little bootstrap and I found a tutorial for navbar with 3.3.5 and could get it working fine.

        <ul class="nav nav-pills">
      <li class="active"><a data-toggle="tab" href="#superman">Superman</a></li>
      <li><a data-toggle="tab" href="#batman">Batman</a></li>
    
      <!-- Dropdown menu item -->
      <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Flash
        <span class="caret"></span></a>
        <ul class="dropdown-menu">
    
          <!-- Disable a tab -->
          <li class="disabled"><a data-toggle="tab" href="#flash">The Flash</a></li>
          <li><a data-toggle="tab" href="#kidflash">Kid Flash</a></li>
        </ul>
      </li>
    </ul>
    
    <div class="tab-content">
      <div id="superman" class="tab-pane fade in active">
        <p>Superman is a fictional superhero appearing in American comic books published by DC Comics. </p>
      </div>
      <div id="batman" class="tab-pane fade">
        <p>Batman is a fictional superhero appearing in American comic books published by DC Comics. </p>
      </div>
      <div id="flash" class="tab-pane fade">
        <p>The Flash is a fictional superhero appearing in American comic books published by DC Comics. </p>
      </div>
      <div id="kidflash" class="tab-pane fade">
        <p>Kid Flash is a fictional superhero appearing in American comic books published by DC Comics. </p>
      </div>
    </div>
    

    When I realized that 4 was the most recent version I figured it'd be best to learn 4. I can get the navbar to work properly with 4 but I can find no documentation on how to actually change the content being displayed when the different tabs are pressed. The code I have so far is below.

    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="#">Augma Home</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
        <div class="navbar-nav">
          <a class="nav-item nav-link active" href="#home">Home <span class="sr-only">(current)</span></a>
          <a class="nav-item nav-link" href="#menu">Menu</a>
          <a class="nav-item nav-link" href="#colors">Colors</a>
          <a class="nav-item nav-link disabled" href="#">Disabled</a>
        </div>
      </div>
    </nav>
    

    I looking for the equivalent of the tab-content from 3.3.5. I'm looking for some youtube tutorials now but if anyone has anyone that they feel is particularly good please feel free to share. Also I apologize if this is a really basic question I'm a backend guy so being unfamiliar with the jargon for this front end stuff has made search for this particular issue rather frustrating.