Я использую Bootstrap с глобальной навигационной панелью, прикрепленной к верхней части тела страницы.
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/">MyBrand</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="#>Page 1</li>
<li><a href="#>Page 2</li>
<li><a href="#>Page 3</li>
</ul>
</div>
</div>
</div>
</div>
Я добавил поле на 40 пикселей поверх тела, чтобы верхняя часть страницы не лежала на панели навигации.
body {
background-color: #f5f5f5;
position: relative;
margin-top: 40px;
}
До сих пор все работает нормально. Я также использую внутренние привязки, чтобы упростить навигацию внутри страницы, используя те же механизмы, которые Twitter использовал с аффикс-компонентом в документации Bootstrap, что позволяет пользователю перейти к различным разделам на странице (см. http://twitter.github.com/bootstrap/getting-started.html)
<a href="#section1">Section 1</a>
<a href="#section2">Section 2</a>
<a href="#section3">Section 3</a>
[...]
<section id="section1">
[...]
[...]
[...]
</section
<section id="section2">
[...]
[...]
[...]
</section
<section id="section3">
[...]
[...]
[...]
</section>
Моя проблема в том, когда пользователь нажимает, браузер привязывает цель к самой верхней части экрана, содержимое исчезает под навигационной панелью. Я заметил, что Twitter использовал трюк, целевые теги <section>
включают "padding-top: 30px;", ближайший <h1>
включает "margin-top: 10px;"; CSS, чтобы текст отображался ровно на 40 пикселей ниже верхней части экрана.
Я не могу позволить мне "потерять" 40 пикселей между каждой секцией, мой дисплей должен оставаться компактным. Мой вопрос: есть ли способ, чтобы внутренние якоря не придерживались самой верхней части экрана, а оставались в стороне от верхней части экрана произвольной длины?