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