У меня есть этот код Bootstrap для Twitter
<div class='navbar navbar-fixed-top'>
<div class='navbar-inner'>
<div class='container'>
<a class='btn btn-navbar' data-target='.nav-collapse' data-toggle='collapse'>
<span class='icon-bar'></span>
<span class='icon-bar'></span>
<span class='icon-bar'></span>
</a>
<div class='nav-collapse'>
<ul class='nav'>
<li class='active'>
<a href='some_url'>My Home</a>
</li>
<li>
<a href='some_url'>Option 1 </a>
</li>
<li>
<a href='some_url'>Another option</a>
</li>
<li>
<a href='some_url'>Another option</a>
</li>
</ul>
</div>
</div>
</div>
</div>
Но когда я просматриваю начало страницы, панель навигации блокирует часть содержимого, которое находится в верхней части страницы. Любая идея о том, как заставить его понижать остальную часть контента ниже при просмотре верхней части страницы, чтобы содержимое не блокировалось навигационной панелью?
Добавьте в свой CSS:
body {
padding-top: 65px;
}
Фиксированная навигационная панель будет накладывать ваш другой контент, если вы не добавите дополнение к верхней части тела.
Добавление дополнений, подобных этому, недостаточно, если вы используете отзывчивый бутстрап. В этом случае при изменении размера окна вы получите разрыв между верхней частью страницы и навигационной панелью. Правильное решение выглядит так:
body {
padding-top: 60px;
}
@media (max-width: 979px) {
body {
padding-top: 0px;
}
}
Для bootstrap 3 класс navbar-static-top
вместо navbar-fixed-top
предотвращает эту проблему, если вам не нужно, чтобы навигационная панель всегда была видимой.
гораздо более удобное решение для вашей справки, оно отлично работает во всех моих проектах:
измените свой первый "div" с
<div class='navbar navbar-fixed-top'>
к
<div class="navbar navbar-default navbar-static-top">
Я использую jQuery для решения этой проблемы. Это фрагмент для BS 3.0.0:
$(window).resize(function () {
$('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);
});
$(window).load(function () {
$('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);
});
У меня был хороший успех с созданием фиктивного нефиксированного навигационного бара прямо перед моей реальной фиксированной навигационной панелью.
<nav class="navbar navbar-default"></nav> <!-- Dummy nav bar -->
<nav class="navbar navbar-default navbar-fixed-top"> <!-- Real nav bar -->
<!-- Nav bar details -->
</nav>
Интервал работает отлично при всех размерах экрана.
В моем проекте, полученном из учебника MVC 5, я обнаружил, что изменение отступов тела не повлияло. Для меня работали следующие:
@media screen and (min-width:768px) and (max-width:991px) {
body {
margin-top:100px;
}
}
@media screen and (min-width:992px) and (max-width:1199px) {
body {
margin-top:50px;
}
}
Он разрешает случаи, когда navbar складывается в 2 или 3 строки. Это можно вставить в bootstrap.css в любом месте после строк body { margin: 0; }
Как видно на в этом примере из Twitter, добавьте это перед строкой, включающей декларации чувствительных стилей:
<style>
body {
padding-top: 60px;
}
</style>
Так же:
<link href="Z/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<style type="text/css">
body {
padding-top: 60px;
}
</style>
<link href="Z/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" />
с navbar navbar-default все работает нормально, но если вы используете navbar-fixed-top, вы должны включить нестандартное тело стиля {padding-top: 60px; } в противном случае он заблокирует содержимое под ним.
Загрузочный файл v4 стартовый шаблон css использует:
body {
padding-top: 5rem;
}
используя percentage
, намного лучше, чем pixels
.
body {
padding-top: 10%; //This works regardless of display size.
}
При необходимости вы все равно можете быть явным, добавляя разные breakpoints
, как упоминалось в другом ответе @spajus
Используя MVC 5, способ, которым я исправил мой, состоял в том, чтобы просто добавить мой собственный Site.css, загруженный после других, следующей строкой:
body{padding: 0}
и я изменил код в начале _Layout.cshtml, чтобы быть:
<body>
<div class="navbar navbar-inverse navbar-static-top">
<div class="container">
@if (User.Identity.IsAuthenticated) {
<div class="top-navbar">
<div class='navbar' data-spy="affix" data-offset-top="0">
Если ваш навигатор находится сверху страницы, установите значение равным 0. В противном случае установите для параметра data-offset-top
значение содержимого над навигационной панелью.
Между тем, вам необходимо изменить css
как таковой:
.affix{
width:100%;
top:0;
z-index: 10;
}
вы должны добавить
#page
{
padding-top: 65px
}
чтобы не уничтожить липкий нижний колонтитул или что-то еще