Многострочный элемент navbar в начальной загрузке 4 - PullRequest
0 голосов
/ 28 мая 2018

У меня есть панель навигации, и она отлично работает, когда есть только однострочные элементы:

<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 голосов
/ 28 мая 2018

Удалите profile-info и используйте эти классы для тега a.

  1. d-flex - чтобы сделать его flex
  2. flex-column - изменить его свойство flex-direction на column
  3. text-right - выровнять его inline дочерние элементы с правой стороны от него

<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>

Чтобы выровнять другой items по вертикали в центре списка, используйте align-self-center для каждого из элементов li.

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

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...