Bootstrap导航栏通知徽章

5

我正在建设一个网站,允许用户互相发送消息。我使用 AJAX 获取新消息的数量。因此,我只需要找到一种在用户导航栏中显示徽章的方法。

这是我的目标:

enter image description here

我希望使用<span class="badge badge-pill badge-primary">1</span>创建徽章

以下是我的导航栏代码:

<nav class="navbar navbar-expand-md navbar-dark bg-dark navbar-laravel" style="margin-bottom: 20px;">
    <div class="container">
        <a class="navbar-brand" href="#">Website</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">
            <!-- Left Side Of Navbar -->
            <ul class="navbar-nav mr-auto">
                <li class="nav-item">
                    <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="messages">Messages <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">People <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Photos <span class="sr-only">(current)</span></a>
                </li>
            </ul>

            <!-- Right Side Of Navbar -->
            <ul class="navbar-nav ml-auto">
                <li><a class="nav-link" href="#">Login</a></li>
                <li><a class="nav-link" href="#">Register</a></li>
            </ul>
        </div>
    </div>
</nav>

你所描述的是动态行为。你需要一些JavaScript来监听消息并动态地为你创建DOM元素。或者,如果你正在进行服务器端编程,你可以在后端实现它,并通过页面加载时的API向上游传递它。 - Callat
我知道,这不是问题。我已经设置了一个 AJAX 调用,每 5 秒检查新消息,所以我知道用户何时收到新消息以及有多少条新消息。我只需要在他的导航栏上添加一个徽章来通知他。 - Mike Davidson
哦!那么,在你的 ajax 成功处理程序中,你尝试过使用循环来遍历集合并执行类似于 $("#Messages").append('<span class="badge badge-pill badge-primary">totalCount</span>') 的操作吗?这样看起来你只需要快速统计所有这些内容,然后将其附加在导航条的 li 中。 - Callat
1个回答

12
根据您发布的图片,您可以在 "messages" 父级 "
  • " 中添加徽章,例如:
    <li class="nav-item">
        <span class="badge badge-pill badge-primary" style="float:right;margin-bottom:-10px;">1</span> <!-- your badge -->
        <a class="nav-link" href="messages">Messages <span class="sr-only">(current)</span></a>
    </li>
    

    (假设不需要JavaScript,因为您已经准备好更新徽章的ajax函数。)
    当然,您可以将内联样式提取到外部样式表中。
    (这里是一个示例https://jsfiddle.net/k6x40tct/2/
    希望这可以帮助您。

  • 我不得不使用 margin-bottom: -12px 来使所有导航项垂直对齐。 - Pascal Polleunus

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接