#html #css #bootstrap-4 #navbar
#HTML #css #bootstrap-4 #панель навигации
Вопрос:
Я пытаюсь свернуть панель Bootstrap
навигации, когда ширина экрана равна 1280 пикселей, но вместо того, чтобы свернуть панель навигации, панель навигации идет сверху, это мой код:
body {
padding-top: 90px;
}
@media (min-width: 1280px) {
body {
padding-top: 0;
}
}
@media (min-width: 1280px) {
body {
margin-left: 232px;
}
}
.navbar.fixed-left {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1030;
}
@media (min-width: 1280px) {
.navbar.fixed-left {
bottom: 0;
width: 232px;
flex-flow: column nowrap;
align-items: flex-start;
}
.navbar.fixed-left .navbar-collapse {
flex-grow: 0;
flex-direction: column;
width: 100%;
}
.navbar.fixed-left .navbar-collapse .navbar-nav {
flex-direction: column;
width: 100%;
}
.navbar.fixed-left .navbar-collapse .navbar-nav .nav-item {
width: 100%;
}
.navbar.fixed-left .navbar-collapse .navbar-nav .nav-item .dropdown-menu {
top: 0;
}
}
@media (min-width: 1280px) {
.navbar.fixed-left {
right: auto;
}
.navbar.fixed-left .navbar-nav .nav-item .dropdown-toggle:after {
border-top: 0.3em solid transparent;
border-left: 0.3em solid;
border-bottom: 0.3em solid transparent;
border-right: none;
vertical-align: baseline;
}
.navbar.fixed-left .navbar-nav .nav-item .dropdown-menu {
left: 100%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet"
id="theme_link"
href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.3.1/materia/bootstrap.min.css"/>
<nav class="navbar navbar-expand-md navbar-dark bg-primary fixed-left">
<a class="navbar-brand" href>Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault"
aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link">Home</a>
</li>
<li class="nav-item">
<a class="nav-link">About</a>
</li>
<li class="nav-item">
<a class="nav-link">Contact</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item">Action</a>
<a class="dropdown-item">Another action</a>
<a class="dropdown-item">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item">Separated link</a>
<a class="dropdown-item">One more separated link</a>
</div>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-class="fixed-left">
<i class="fa fa-arrow-left"></i>
Fixed Left
</a>
</li>
<li class="nav-item">
<a class="nav-link" data-class="fixed-top">
<i class="fa fa-arrow-up"></i>
Fixed Top
<small>(original)</small>
</a>
</li>
<li class="nav-item">
<a class="nav-link" data-class="fixed-right">
<i class="fa fa-arrow-right"></i>
Fixed Right
</a>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="jumbotron">
<h1 class="display-4">
Bootstrap Navbar Sidebar
<br>
<small>Fixed to Left or Right</small>
</h1>
<p>
<strong>
Use classic Bootstrap navbar as sidebar, on left or right side.
</strong>
</p>
<p>
<a class="github-button" href="https://github.com/mladenplavsic/bootstrap-navbar-sidebar"
data-icon="octicon-star" data-show-count="true"
aria-label="Star mladenplavsic/bootstrap-navbar-sidebar on GitHub">Star</a>
<a class="github-button" href="https://github.com/mladenplavsic/bootstrap-navbar-sidebar/fork"
data-icon="octicon-repo-forked" data-show-count="true"
aria-label="Fork mladenplavsic/bootstrap-navbar-sidebar on GitHub">Fork</a>
<a class="github-button" href="https://github.com/mladenplavsic"
aria-label="Follow @mladenplavsic on GitHub">Follow @mladenplavsic</a>
</p>
<p>Same as when using <code>.fixed-top</code> for navbar - add class <code>.fixed-left</code> or <code>.fixed-right</code>
where needed.</p>
<p>Click buttons below, and appropriate class will be added to example navbar.</p>
<div class="btn-group" role="group">
<button type="button" data-class="fixed-left" class="btn btn-primary">
<i class="fa fa-arrow-left"></i>
Fixed Left
</button>
<button type="button" data-class="fixed-top" class="btn btn-primary">
<i class="fa fa-arrow-up"></i>
Fixed Top
<small>(original)</small>
</button>
<button type="button" data-class="fixed-right" class="btn btn-primary">
<i class="fa fa-arrow-right"></i>
Fixed Right
</button>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="form-group">
<label>
Select another bootstrap theme from
<a href="https://bootswatch.com/" target="_blank">Bootswatch</a>
</label>
<select class="form-control width-md" id="theme_select" onchange="selectTheme(value)"></select>
</div>
</div>
</div>
</div>
Как вы можете видеть, я установил 1280px
в медиа-запросах, но по какой-то причине панель навигации вместо свертывания отображается как верхняя панель, что я сделал не так?
Комментарии:
1. Почему именно
1280px
? Использует Bootstrap@media (min-width:1200px)
, поэтому у вас будут некоторые ненужные разрывы макета, и вам придется проделать дополнительную работу, чтобы создать узкое пространство между1200px-1280px
ними .
Ответ №1:
Ближайшая точка останова начальной загрузки находится в 1200px
. Я бы рекомендовал придерживаться этого, потому что таким образом вы избежите чрезмерных изменений макета. Если вы хотите переместить свои точки останова @media 1200px
в соответствие с Bootstrap, вы можете просто изменить свой класс .navbar-expand-md
на .navbar-expand-xl
, и все.
Codepen: https://codepen.io/Terrafire123/pen/NWRKdKR
Редактировать:
Если все, что вы хотите сделать, это просто запретить боковой панели перекрывать тело, вы можете добавить это:
@media (min-width: 1200px) {
body {
margin-left: 232px !important;
}
}
(Это уже существует в вашем исходном коде, но без !important
него оно перезаписывается margin:0;
настройками Bootstrap по умолчанию.)
Комментарии:
1. Если я меняю класс на
navbar-expand-xl
контейнер слева, не заполняются строки, кажется, что по какой-то причине точка останова срабатывает неправильно2. @sfarzoso Кажется, что в этом Codepen все работает нормально: codepen.io/Terrafire123/pen/NWRKdKR . Возможно, я вас неправильно понимаю?
3. Я имею в виду, что правильный контейнер должен находиться рядом с панелью навигации, а не под ней: imgur.com/a/pLO4SU5 должно быть что-то вроде: mladenplavsic.github.io/bootstrap-navbar-sidebar но с разными точками останова
4. @sfarzoso Oh! Вы имеете в виду, что панель навигации и тело не должны перекрываться. Я отредактировал свой ответ.
5. @sfarzoso …. Вы правы, я это исправил. Спасибо.
1200px
правильно, нет1201px
.