所以我想为不同类型的用户创建一个页面.也就是说,不是为管理员创建一个视图,而是为用户创建另一个视图,我希望为两者都创建一个视图,并对那些没有管理员权限的人隐藏某些元素.我写了这段代码

<html lang="en" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<!-- ... -->
<div class="row justify-content-center">
        <div class="col-sm-1 px-2 pt-1">
            <ul class="nav nav-pills flex-column">
                <li class="nav-item" sec:authorize="hasAuthority('ADMIN')">
                    <a th:class="'nav-link' + ${loggedUser.isAdmin() ? ' active' : ''}" data-toggle="pill" href="#admin-tab">Admin</a>
                </li>
                <li class="nav-item">
                    <a th:class="'nav-link' + ${!loggedUser.isAdmin() ? ' active' : ''}" data-toggle="pill" href="#user-tab">User</a>
                </li>
            </ul>
        </div>
        <div class="col-sm-11 p-0 tab-content">
             <div id="admin-tab" class="tab-pane container mw-100 p-0"...>
             <div id="user-tab" class="tab-pane container p-0 mx-auto" th:object="${loggedUser}"...>
        </div>
      </div>

当这段代码到达浏览器时,它会变成这样(如果我以管理员身份登录)

<div class="row justify-content-center">
        <div class="col-sm-1 px-2 pt-1">
            <ul class="nav nav-pills flex-column">
                <li class="nav-item">
                    <a class="nav-link active" data-toggle="tab" href="#admin-tab">Admin</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" data-toggle="tab" href="#user-tab">User</a>
                </li>
            </ul>
        </div>
        <div class="col-sm-11 p-0 tab-content">
            <div id="admin-tab" class="tab-pane container mw-100 p-0">
                <!-- the admin tab content -->
            </div>
            <div id="user-tab" class="tab-pane container p-0 mx-auto">
                <!-- the user tab content -->
            </div>

很酷,是吧?问题

enter image description here

有趣的是,我可以单击User选项卡,然后重新单击Admin选项卡,内容就会显示出来

enter image description here

米老鼠甚至做不到这一点,因为他没有可以重新点击的标签

enter image description here

这就好像JS只关心手动点击,而CSS也有active个属性

我注意到他们是use role="tablist",而Bootstrap 4在w3schools.然而,包括该元素也没有帮助

Why isn't my tab content displayed right away? How do I get it fixed?

<!DOCTYPE html>
<html lang="en" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <title>Home Page</title>
</head>
<body>
<div class="container mw-100">
<div class="row justify-content-center">
        <div class="col-sm-1 px-2 pt-1">
            <ul class="nav nav-pills flex-column">
                <li class="nav-item">
                    <a class="nav-link active" data-toggle="tab" href="#admin-tab">Admin</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" data-toggle="tab" href="#user-tab">User</a>
                </li>
            </ul>
        </div>
        <div class="col-sm-11 p-0 tab-content">
            <div id="admin-tab" class="tab-pane container mw-100 p-0">
                <p class="text-center">Admin tab content</p>
            </div>
            <div id="user-tab" class="tab-pane container p-0 mx-auto">
                <p class="text-center">User tab content</p>
            </div>
         </div>
     </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.3/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

推荐答案

#active-tab一个active类,它会默认显示它的内容,这样问题就解决了.?

<!DOCTYPE html>
<html lang="en" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <title>Home Page</title>
</head>
<body>
<div class="container mw-100">
<div class="row justify-content-center">
        <div class="col-sm-1 px-2 pt-1">
            <ul class="nav nav-pills flex-column">
                <li class="nav-item">
                    <a class="nav-link active" data-toggle="tab" href="#admin-tab">Admin</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" data-toggle="tab" href="#user-tab">User</a>
                </li>
            </ul>
        </div>
        <div class="col-sm-11 p-0 tab-content">
            <div id="admin-tab" class="tab-pane container mw-100 p-0 active">
                <p class="text-center">Admin tab content</p>
            </div>
            <div id="user-tab" class="tab-pane container p-0 mx-auto">
                <p class="text-center">User tab content</p>
            </div>
         </div>
     </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.3/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Html相关问答推荐

为什么html复选框总是具有只读属性?

隐藏滚动条和禁用文本 Select 的CSS技术?

如何使用css实现悬停时的动画zoom ?

如何仅 Select 与子代CSS类匹配的第一个元素

如何防止可见的滑动抽屉,同时转移HTML方向?

为什么在移动视图中,这个水平可滚动的表格会在表格的右侧显示额外的空间?

Bootstrap nav没有崩溃

如何将CSS滤镜仅应用于背景图像

有没有办法移动占位符?

页面文件夹内的 HTML 页面未加载主目录的 style.css

如何影响 HTML 元素的哪些子元素导致其增长,哪些不增长?

子元素放在文本样式之后,样式会 destruct

如何消除线性渐变线的模糊?

透明渐变凹矩形

如何并排放置
的定义列表,但如果
变长,
会向下移动?

如何从 razor 页面打开 html 页面

如何使用 CSS Flex 设计一个导航栏,其中一组项目左对齐而另一组项目右对齐?

font awesome 的 CDN/CSS 如何工作?

项目的水平列表:倒数第二个项目居中,而最后一个项目占据所有剩余空间

如何将第一个 p 标签放在其下方第二个 p 标签的中间