css - 使 navbar-brand 更大的字体使其与旧版 Safari 中的导航项重叠

标签 css bootstrap-4

我试图在 Bootstrap 4 beta navbar-component 中使 navbar-brand 字体更大。

我覆盖了 navbar-brand 并应用了 font-size,它在所有现代浏览器上都能正常工作

    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  <a class="navbar-brand" routerLink="start">Nordic Sounds</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 mr-auto">
      <li class="nav-item pb-0 mb-0">
        <a class="nav-link pb-0" routerLink="search" routerLinkActive="active">
          Read the book
        </a>
      </li>

      <li class="nav-item pb-0 mb-0" *ngFor="let page of applicationStateService.getAllPages()">
          <a class="nav-link pb-0" [routerLink]="['page', page.id]" routerLinkActive="active">
        {{ page.title }}
          </a>
      </li>
      <li class="nav-item p-0 m-0" *ngIf="!applicationStateService.isProductionBuild()">
        <a class="nav-link pb-0" routerLink="admin" [routerLinkActive]="['active']">
          Admin
        </a>
      </li>
    </ul>
  </div>
</nav>

这是我添加到 navbar-brand 以使字体变大的 CSS:

.navbar-brand {
    font-family: "lato" !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    font-size: 1.9em;
    color: #393939;
}

但是,在一些较旧的 Safari 上(例如 El Capitan 10.11),我将导航栏品牌做得越大,它就越开始与旁边的第一个导航项重叠。

较旧的 Safari(白色字体是因为我在捕获时不小心将其悬停): This is how it looks like in older Safari

现代浏览器: This is how it looks in any modern browser

当我检查这个较旧的 Safari 上的元素时,容器似乎比实际的字体元素小,所以字体基本上溢出了容器。如果我在旧版 Safari 上从“.navbar”中删除“display: flex”,那么“display:-webkit-box”将成为主导并且布局有效。但是,它在移动布局中的流动不正确。

最佳答案

我能够解决这个问题。我猜它有点老套,因为它开箱即用,但无论如何。

导致此问题的原因(不知道为什么)是在较旧的 Safari 上,.navbar 同时具有“display: flex”和“display:-webkit-box”。如果我禁用了“display: flex”,那么“display:-webkit-box”就会接管它并在桌面上运行。但是当移动 Accordion 菜单激活时,布局流动不正确。

所以我只需要将“display: -webkit-box !important”添加到 1) 在支持它的浏览器上覆盖“display: flex” 2) 仅影响桌面版本:

.navbar {
    // Fixes menu on old Safari by overriding display: flex on desktop-view
    @include media-breakpoint-up(md) {
        display: -webkit-box !important;
    }
}

请注意,断点必须与您在 .navbar 上的 navbar-expand-{xs/sm/md/lg/xl} 相对应。

我在最新的 Chrome、Firefox 和 Edge 上进行了测试,他们不介意这个 CSS 并且像以前一样工作。

关于css - 使 navbar-brand 更大的字体使其与旧版 Safari 中的导航项重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46705015/

相关文章:

javascript - 如何在 react-select 的选项中添加图标?

html - Bootstrap 4 响应间距(填充)不起作用

html - 图像在较小的设备上移动到下一行

html - bgcolor 属性不适用于 Bootstrap

html - 以 Angular 发布数据时出现错误请求错误

HTML UL 列表 4X2

javascript - 到达英雄部分底部时,将静态导航栏更改为固定在滚动条上

html - 使用 css 简单地居中一个对象,没有 hack

html - 我想要没有容器流体的完整 div 但不改变容器宽度和结构?

javascript - Bootstrap 4 datetimepicker - 如何在发送值之间显示不同的日期格式?