Bootstrap 4:当Logo增加导航栏高度时,垂直对齐导航链接

17

我对Bootstrap 4框架不熟悉,尽管阅读了所有文档和StackOverFlow上的所有现有B4问题,但仍然卡住了。

在我的导航栏中,我插入了一个高度和宽度为50px的SVG标志。这会自动使导航栏变高。我没有调整任何CSS,只是标志强制导航栏高度增加。

这是我的HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">
    <title>@yield('title')</title>
    <link rel="import" href="elements.html">
    <link rel="stylesheet" href="/styles/app.css">
</head>
<body>
    <header class="navbar navbar-light navbar-fixed-top bd-faded">
        <div class="clearfix hidden-sm-up">
            <button class="navbar-toggler pull-right" data-toggle="collapse" data-target="#navbar">
                    &#9776;
                </button>
            <a href="/" class="navbar-brand">
                <img src="/images/brand.svg" alt="Logo">
                <span>Bootstrap</span>
            </a>
        </div>
        <div class="collapse navbar-toggleable-xs" id="navbar">
            <a href="/" class="navbar-brand">
                <img src="/images/brand.svg" alt="Logo">
                <span>Bootstrap</span>
            </a>
            <nav class="nav navbar-nav">
                <div class="nav-item nav-link"><a href="#">Link 1</a></div>
                <div class="nav-item nav-link"><a href="#">Link 2</a></div>
                <div class="nav-item nav-link"><a href="#">Link 3</a></div>
            </nav>
        </div>
    </header>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    <script src="/scripts/vendor.js"></script>
    <script src="/scripts/bootstrap.js"></script>
    <script src="/scripts/app.js"></script>
    <script src="/components/webcomponentsjs/webcomponents.js"></script>
</body>
</html>

这是我的自定义CSS:

.navbar-brand {
    font-size: 22px;
    img {
        display: inline-block;
        margin-right: 8px;
        width: 50px;
        height: 50px;
    }
}

我希望将导航链接link1, link2和link3与标题Bootstrap垂直对齐。

提前感谢您。


你的标志下面有“Bootstrap”字样吗,还是只有标志? - max
@makshh 我有标志和标题,目前的标题是“Bootstrap”... 它位于标志的右侧。 - Paper9oll
4个回答

16

我遇到了一个类似的情况,想要垂直对齐我的导航项目。

步骤1:在您的 .navbar-nav 父元素中添加类 d-lg-flex align-items-center。这样可以使用 flex-utilities 对齐子项。

步骤2:在每个子 nav-item 中添加 h-100 类。我不知道 nav-item 的预定义高度。通过定义 nav-item 的高度,它将遵循上面设置的 align-items-center 的 flex 规则。

步骤3:请检查我的 codepen 中的外部链接,因为导航栏需要额外的 js。

这是一个垂直居中导航项目的工作示例:https://codepen.io/b3bold/pen/rvMwzN

<nav class="navbar navbar-expand-md p-3 mb-2 navbar-light bg-white text-dark">   
  <a class="navbar-brand" href="#">
    <img src="https://istack.dev59.com/snRuy.webp" />
  </a>

  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav ml-auto text-center w-100 justify-content-between ml-lg-0 d-lg-flex align-items-center">
      <div class="nav-item h-100"><a class="nav-link" href="#">RandomLink</a></div>
      <div class="nav-item h-100"><a class="nav-link"href="#">Some Really Long Link as an Example of Vertical </a></div>
      <div class="nav-item h-100"><a class="nav-link" href="#">RandomLink</a></div>
      <div class="nav-item h-100"><a class="nav-link" href="#">RandomLink</a></div>
      <div class="nav-item h-100"><a class="nav-link" href="#">RandomLink</a></div>
    </ul>
  </div>
</nav>

13

我认为您可以从链接中删除顶部和底部填充,并为其添加高度和行高。同时,从 .navbar-brand 中删除填充。

只需添加以下CSS:

.navbar-brand {
  padding: 0;
}
.navbar-nav .nav-link {
  padding-top: 0;
  padding-bottom: 0;
  height: 50px;
  line-height: 50px;
}

CODEPEN


这也是我的第一个解决方案,直到我意识到它将是由“畸形”的标记或标记针对B4意图而使用的“黑客” - 我主要考虑响应性。 - davidkonrad
同意上面的评论,我想避免使用额外的CSS样式。 - Alexander Romero
谢谢。通过调整导航链接的底部填充,我成功将链接与我的品牌(一个标志而非文本)对齐到特定高度。 - Andrew
设置高度和行高可以解决问题。 - s2t2

1

我正在使用Bootstrap 4.5.0。对我来说,以下方法奏效了(除了@Alexander Romero上面提到的内容,我还需要添加mt-2):

        <li class="nav-item dropdown align-items-center mt-2"><select class="dropdown" id="changeAccentColor">
            <option value="">Theme</option>
            <option value="">Default</option>
            <option value="#F5FFFA">Mint</option>
            <option value="#32CD32">Lime</option>
            <option value="#008080">Teal</option>
            <option value="#DCDCDC">Gray</option>
            <option value="#FFC0CB">Pink</option>
            <option value="#F5F5F5">Smoky</option>
        </select></li>

现在我的自定义下拉框垂直对齐到我设置的导航条高度,即使我将缩放比例放大400-500%。它运行得非常流畅。希望有人能够发现它对于满足他们的需求有用。

-3

试试这个。

 <header class="navbar navbar-default navbar-top">
                <div class="container">
                    <div class="navbar-header">
                        <!-- Stat Toggle Nav Link For Mobiles -->
                        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                            <i class="fa fa-bars"></i>
                        </button>
                        <!-- End Toggle Nav Link For Mobiles -->
                        <a class="navbar-brand" href="#">
                            <h3>Bootstrap</h3>
                        </a>
                    </div>
                    <div class="navbar-collapse collapse navbar-right">
                       <!-- Start Navigation List -->
                        <ul class="nav navbar-nav">
                            <li> <a href="#">Link 1</a> </li>
                            <li><a href="#">Link 2</a> </li>
                            <li><a href="#">Link 3</a></li>
                        </ul>
                        <!-- End Navigation List -->
                    </div>
                </div>
      </header>

这是针对Bootstrap 4的吗?问这个问题是因为我没有看到nav-item和nav-link类位于navbar-nav内部。 - Paper9oll

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