skip to Main Content

I trying to use navbar component from Twitter Bootstrap 4 with nested sub menu, but the arrow in the menu item that has sub menu is not appear at all, i do not no why.

here the arrow appears:

here arrow appear

but not appear in my side:

enter image description here
Here’s the basic outline of my html code:

<div class="container-fluid">
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">

            <a class="navbar-brand" asp-controller="Home" asp-action="Index">Right Way</a>

            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>

            <div class="collapse navbar-collapse" id="navbarSupportedContent">
                <ul class="navbar-nav m-auto justify-content-center">
                    <li class="nav-item active">
                        <a class="nav-link" asp-controller="Home" asp-action="Index">Home <span class="sr-only">(current)</span></a>
                    </li>

                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                            Dropdown
                        </a>
                        <ul class="dropdown-menu" id="sss" aria-labelledby="navbarDropdownMenuLink">
                            <li><a class="dropdown-item" href="#">Action</a></li>
                            <li><a class="dropdown-item" href="#">Another action</a></li>
                            <li class="dropdown-submenu">
                                <a class="dropdown-item dropdown-toggle" href="#">Submenu</a>
                                <ul class="dropdown-menu">
                                    <li><a class="dropdown-item" href="#">Submenu</a></li>
                                    <li><a class="dropdown-item" href="#">Submenu0</a></li>
                                    <li class="dropdown-submenu">
                                        <a class="dropdown-item dropdown-toggle" href="#">Submenu 1</a>
                                        <ul class="dropdown-menu">
                                            <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                            <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                        </ul>
                                    </li>
                                    <li class="dropdown-submenu">
                                        <a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a>
                                        <ul class="dropdown-menu">
                                            <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                            <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                        </ul>
                                    </li>
                                </ul>
                            </li>
                        </ul>

                    </li>
                </ul>

            </div>
    </nav>
</div>

that is my CSS code:

.navbar-nav li:hover > ul.dropdown-menu {
    display: block;
}

.dropdown-submenu {
    position: relative;
}

.dropdown-submenu > .dropdown-menu {
    top: 0;
    left: 100%;
    margin-top: -6px;
}

/* rotate caret on hover */
.dropdown-menu > li > a:hover:after {
    text-decoration: underline;
    transform: rotate(-90deg);
}

I do not know what the wrong i tried all my best.

2

Answers


  1. There is no method written in Bootstrap for arrows on submenus. You have to customize the css to do so.

    There was a method of adding <span class="caret"></span> on Drop items but Bootstrap 4 has replaced it with ::after. Check this link for more info https://getbootstrap.com/docs/4.0/migration/#dropdowns

    So idea is that you have to add arrow by CSS by getting if the item has dropdown or not.

    But i have added your code as fiddle, it is working fine here.

    .navbar-nav li:hover > ul.dropdown-menu {
        display: block;
    }
    
    .dropdown-submenu {
        position: relative;
    }
    
    .dropdown-submenu > .dropdown-menu {
        top: 0;
        left: 100%;
        margin-top: -6px;
    }
    
    /* rotate caret on hover */
    .dropdown-menu > li > a:hover:after {
        text-decoration: underline;
        transform: rotate(-90deg);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://getbootstrap.com/dist/js/bootstrap.min.js"></script>
    
    
    <div class="container-fluid">
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
    
                <a class="navbar-brand" asp-controller="Home" asp-action="Index">Right Way</a>
    
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
    
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav m-auto justify-content-center">
                        <li class="nav-item active">
                            <a class="nav-link" asp-controller="Home" asp-action="Index">Home <span class="sr-only">(current)</span></a>
                        </li>
    
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                Dropdown
                            </a>
                            <ul class="dropdown-menu" id="sss" aria-labelledby="navbarDropdownMenuLink">
                                <li><a class="dropdown-item" href="#">Action</a></li>
                                <li><a class="dropdown-item" href="#">Another action</a></li>
                                <li class="dropdown-submenu">
                                    <a class="dropdown-item dropdown-toggle" href="#">Submenu</a>
                                    <ul class="dropdown-menu">
                                        <li><a class="dropdown-item" href="#">Submenu</a></li>
                                        <li><a class="dropdown-item" href="#">Submenu0</a></li>
                                        <li class="dropdown-submenu">
                                            <a class="dropdown-item dropdown-toggle" href="#">Submenu 1</a>
                                            <ul class="dropdown-menu">
                                                <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                                <li><a class="dropdown-item" href="#">Subsubmenu1</a></li>
                                            </ul>
                                        </li>
                                        <li class="dropdown-submenu">
                                            <a class="dropdown-item dropdown-toggle" href="#">Submenu 2</a>
                                            <ul class="dropdown-menu">
                                                <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                                <li><a class="dropdown-item" href="#">Subsubmenu2</a></li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                            </ul>
    
                        </li>
                    </ul>
    
                </div>
        </nav>
    </div>

    Thanks

    Login or Signup to reply.
  2. Add the following to your CSS

    .dropdown-toggle::after {
      transform: rotate(-90deg);
      -webkit-transform: rotate(-90deg);
      right: 100px;
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search