Ширина нижней границы

#html #css #twitter-bootstrap

Вопрос:

У меня есть меню навигации с помощью начальной загрузки, теперь я хочу добавить нижнюю границу к активной ссылке, к сожалению, ширина нижней границы больше ширины самого текста.

Вот демо-версия codepen в реальном времени

 .navbar-light .navbar-nav .nav-link {
  padding: 20px;
}

.navbar-light .navbar-nav .active .nav-link {
  border-bottom: 2px solid red;
} 
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA 058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">


<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="#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">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav> 

ожидаемый результат:

введите описание изображения здесь

что мне нужно, чтобы получить то, что я хочу?

Комментарии:

1. это происходит потому, что вы разделяете кнопки с помощью отступа, который является внутренней границей. Если вы хотите разместить их без интервалов между границами, используйте поле, которое является внешней границей.

2. Я знаю это, но мне нужна эта обивка, хотя м. Вот почему я спросил, есть ли способ решить эту проблему?

Ответ №1:

Как упоминал @tacoshy, использование поля вместо заполнения приведет к тому, что интервал выйдет за пределы границы.

Вы также можете добавить отступ к .nav-item элементу, который окружает .nav-link .

Похоже, вы пытаетесь сделать так, чтобы расстояние между ними составляло 20 пикселей со всех сторон. Если вы переместите эти 20 пикселей на левое и правое отступы окружающего .nav-item элемента и установите левое и правое отступы .nav-link равными 0, то граница будет соответствовать только длине текста. Затем вы можете добавить часть вертикального интервала внутрь .nav-link элемента, а оставшийся интервал-в верхнюю и нижнюю части .nav-item элемента.

 .navbar-light .navbar-nav .nav-item {
  /* add 10px to top and bottom padding, add 20px to left and right padding */
  padding: 10px 20px; 
}

/* added .nav-item to selector in order to properly override bootstrap padding */
.navbar-light .navbar-nav .nav-item .nav-link {
  /* add 10px top and bottom padding, 0 left and right padding */
  padding: 10px 0;
}

.navbar-light .navbar-nav .active .nav-link {
  border-bottom: 2px solid red;
} 
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA 058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">


<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="#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">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>