bootstrap-4 - Boostrap 4 折叠侧边栏必须点击两次
问题描述
我正在尝试基于那个很好的示例创建一个可折叠的左侧菜单:Codeply example
这是减少的代码:
<div class="row" id="body-row">
<!-- Sidebar -->
<div id="sidebar-container" class="sidebar-expanded d-none d-md-block">
<ul class="list-group"> <!-- Menu with submenu -->
<a href="#submenu1" data-toggle="collapse" aria-expanded="false" class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Dashboard</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<!-- Submenu content -->
<div id='submenu1' class="collapse sidebar-submenu">
<a href="#" class="list-group-item list-group-item-action bg-dark text-white">
<span class="menu-collapsed">Chahgag</span>
</a>
<a href="#" class="list-group-item list-group-item-action bg-dark text-white">
<span class="menu-collapsed">Reports</span>
</a>
<a href="#" class="list-group-item list-group-item-action bg-dark text-white">
<span class="menu-collapsed">Tables</span>
</a>
</div>
<a href="#submenu2" data-toggle="collapse" aria-expanded="false" class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Profile</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<!-- Submenu content -->
<div id='submenu2' class="sidebar-submenu">
<a href="#" class="list-group-item list-group-item-action bg-dark text-white">
<span class="menu-collapsed">Settings</span>
</a>
<a href="#" class="list-group-item list-group-item-action bg-dark text-white">
<span class="menu-collapsed">Password</span>
</a>
</div>
</ul><!-- List Group END-->
</div><!-- sidebar-container END -->
<!-- MAIN -->
<div class="col p-4">
Content
</div><!-- Main Col END -->
</div><!-- body-row END -->
CSS
/* Closed submenu icon */
#sidebar-container .list-group .list-group-item[aria-expanded="false"] .submenu-icon::after {
content: " \f0d7";
font-family: FontAwesome;
display: inline;
text-align: right;
padding-left: 10px;
}
/* Opened submenu icon */
#sidebar-container .list-group .list-group-item[aria-expanded="true"] .submenu-icon::after {
content: " \f0da";
font-family: FontAwesome;
display: inline;
text-align: right;
padding-left: 10px;
}
与示例相反,我希望在页面加载时打开菜单。
问题是,如果我删除侧边栏菜单中的“折叠”(在 submenu2 上完成),子菜单会打开,但用户必须单击两次才能折叠它。
这是显示该问题的简化代码。
解决方案
我使用引导程序 5,与我的情况相同,但我通过添加#
到 data-bs-parent 来修复,如下例所示(✔<code>#bar-topics not ❌<code>bar-topics)
<ul class="nav flex-column " id="bar-topics">
<li class="nav-item">
<a class="nav-link" data-bs-toggle="collapse" data-bs-target="#m1" href="basic.html"> basic</a>
<ul id="m1" class="submenu collapse" data-bs-parent="#bar-topics" >
....
</ul>
</li>
</ul>
推荐阅读
- javascript - 使用 tsc 将 .json 文件转换为 .ts 文件
- pandas - Pandas 重新采样更改日期
- node.js - 在 Kubernetes 集群上对 AutoDesk-Forge 进行身份验证时出现 SSL 证书错误
- reactjs - React useState钩子状态更新器函数错误:useNameOfFunction不是函数
- javascript - 过滤数组中的元素
- mysql - 为什么我无法连接到 docker 容器中的 mysql?
- decode - 如何解码 .dxf 文件?
- python - Timedelta 输出问题
- python - qt.qpa.plugin:无法加载 Qt 平台插件“xcb”
- go - 如何将 go 模块导入 /*_test.go 文件?