引导程序4中以多行为中心的导航栏项

时间:2018-05-27 23:52:48

标签: css twitter-bootstrap sass bootstrap-4

我有一个导航栏,当只有单行项目时,它可以正常工作:

<div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav ml-auto">

                <li class="nav-item">
                    <a class="nav-link" href="#">FAQ</a>
                </li>

                <li class="nav-item">
                    <a class="nav-link profile" href="#">
                        <div class="profile-info">
                            <span class="name">Артём</span>
                        </div>
                    </a>
                </li>
            </ul>
        </div>

enter image description here

但是当项目是多线时,其他项目将失去中心垂直对齐并改为对齐顶部:

<div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav ml-auto">

                <li class="nav-item">
                    <a class="nav-link" href="#">FAQ</a>
                </li>

                <li class="nav-item">
                    <a class="nav-link profile" href="#">
                        <div class="profile-info">
                            <span class="name">Артём</span>
                            <span class="balance">31337 ₽</span>
                        </div>
                    </a>
                </li>
            </ul>
        </div>

enter image description here

我的SASS代码:

#site-header {
  background: #2d3840;
  border-bottom: solid 1px #20272d;
  height: 83px;

  .navbar-brand {
    color: white;
  }

  .nav-item {

    &:not(:first-child) {
      margin-left: 25px;
    }

    &:not(:last-child) {
      margin-right: 25px;
    }

    // General link
    a.nav-link {
      color: white;
      font-size: 16px;
      text-align: center;

      @include transition(0.5s);
      &:hover {
        @include transition(0.3s);
        color: $color-accent;
      }

      &.active {
        padding: 6px 21px 6px 21px;
        background: $color-accent;
        border-radius: 17.5px;
        box-shadow: 0 2px 10px 0 rgba(90, 175, 238, 0.6);

        &:hover {
          color: white;
          box-shadow: none;
        }
      }

      // Profile
      &.profile {
        .profile-info {
          display: inline-block;

          .name {
            display: block;
            font-weight: bold;
          }

          .balance {
            display: block;
            font-size: 16px;
            font-weight: bold;
            color: $color-accent;
          }
        }
      }
    }

  }
}

所需:

enter image description here

那么,当有多行项目时,如何将项目居中?

1 个答案:

答案 0 :(得分:2)

删除profile-info并将这些类用于a标记。

  1. d-flex - 使其成为flex
  2. flex-column - 将其flex-direction属性更改为column
  3. text-right - 将inline个孩子放在右侧
  4. &#13;
    &#13;
    <li class="nav-item">
      <a class="nav-link d-flex flex-column text-right" href="#">
        <span class="name">Артём</span>
        <span class="balance">31337 ₽</span>
      </a>
    </li>
    &#13;
    &#13;
    &#13;

    要在列表中心垂直对齐其他items,请为每个align-self-center元素使用li

    &#13;
    &#13;
    <li class="nav-item  align-self-center">
      <a class="nav-link" href="#">FAQ</a>
    </li>
    &#13;
    &#13;
    &#13;

    &#13;
    &#13;
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/js/bootstrap.js"></script>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="#">Navbar</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 ml-auto">
          <li class="nav-item active  align-self-center">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item  align-self-center">
            <a class="nav-link" href="#">Link</a>
          </li>
    
          <li class="nav-item align-self-center">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
          <li class="nav-item  align-self-center">
            <a class="nav-link" href="#">FAQ</a>
          </li>
    
          <li class="nav-item ">
            <a class="nav-link d-flex flex-column text-right" href="#">
              <span class="name">Артём</span>
              <span class="balance">31337 ₽</span>
            </a>
          </li>
        </ul>
      </div>
    </nav>
    &#13;
    &#13;
    &#13;