html - 如何防止bootstrap label占用空间造成shift

标签 html css

我有一个带有通知图标的导航栏。当有通知时,图标旁边会显示一个标签。但是,此标签也会导致容器变大,并且我的导航栏中的所有内容都会发生变化。我正在为我的导航栏使用 flexbox。

这是我的代码的一个基本示例:

html

<ul class="flex-nav">
  <li class="flex-item">
    link
  </li>
  <li class="flex-item">
    linklink
  </li>
  <li class="flex-item">
    <i class="fa fa-bell fa-lg flex-icon"></i>
    <span class="label label-danger label-as-badge">5</span>
  </li>
  <li class="flex-item">
    link
  </li>
  <li class="flex-item">
    linklinklink
  </li>
  <li class="flex-item">
    link
  </li>
</ul>

CSS

.flex-nav {
  display: flex;
  list-style: none;
  background-color: red;
  height: 56px;
  width: 300px;
  margin: 0 auto;
}

.flex-item {
  border: 1px solid black;
  text-align: center;
  display: flex;
  flex: 1 0 auto;
  justify-content: center;
  align-items: center;
}

.flex-icon {
  text-decoration: none;
  align-items: center;
}

.label-as-badge {
  border-radius: 1em;
  position: relative;
  top: -10px;
  left: -10px;
}

.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}

.label:empty {
  display: none;
}


}

fiddle

https://jsfiddle.net/weuce4du/3/

您可以通过删除 5 并查看通知图标所在框的大小发生了什么变化来理解我的意思。

有没有办法使通知容器保持相同大小,使铃铛图标保持居中,并防止标签占用空间并导致导航栏发生偏移?我以为我可以使用 z-index 以便它位于所有内容之上,但它似乎不起作用。

更新:我唯一想到的就是在容器上设置最大宽度。该图标仍然会轻微移动,但不会导致任何其他导航链接移动。

最佳答案

是因为相对定位。您可以添加一个负边距,例如这个边距:-10px 到跨度。

关于html - 如何防止bootstrap label占用空间造成shift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37449442/

相关文章:

javascript - 更改使用 <object> 嵌入的 SVG 的颜色

html - 最佳 Rails HTML 解析器

html - Facebook 链接图片

HTML 单行文本,如果超过一行则附加 "..."?

css - Font Awesome 图标未显示

jquery - 如何在浏览器窗口的右侧重新定位动态 HTML 元素?

html - 如何将新图标添加到 HTML 元素的 CSS 类

javascript - 如何创建 pdf 文件并通过 Node.js 应用程序下载

jquery - 固定导航栏破坏展开菜单

css - 如何根据设备大小呈现完全不同的 css 和 html?