Возможно ли, чтобы перемещение боковой панели всегда фиксировалось при прокрутке в макете жидкости?
Исправлена боковая панель навигации в загрузочном буклете 2.0
Ответ 1
Примечание.. Существует плагин bootstrap jQuery, который делает это и многое другое, что было представлено несколько версий после того, как этот ответ был написан (почти два года назад) под названием Affix. Этот ответ применяется только в том случае, если вы используете Bootstrap 2.0.4 или ниже.
Да, просто создайте новый фиксированный класс для боковой панели и добавьте класс смещения в ваш div для того, чтобы компенсировать левое поле, например:
CSS
.sidebar-nav-fixed {
padding: 9px 0;
position:fixed;
left:20px;
top:60px;
width:250px;
}
.row-fluid > .span-fixed-sidebar {
margin-left: 290px;
}
Демо: http://jsfiddle.net/U8HGz/1/show/ Редактировать здесь: http://jsfiddle.net/U8HGz/1/
Обновление
Исправлено мое демо, чтобы поддерживать отзывчивый загрузочный лист, теперь он течет с отзывчивой функцией бутстрапа.
Примечание. Эта демонстрация протекает с верхней фиксированной навигационной панелью, поэтому оба элемента становятся position:static
при изменении размера экрана, я разместил еще одну демонстрационную версию ниже, которая поддерживает фиксированную боковую панель, пока экран не снизится для мобильного просмотра.
CSS
.sidebar-nav-fixed {
position:fixed;
top:60px;
width:21.97%;
}
@media (max-width: 767px) {
.sidebar-nav-fixed {
width:auto;
}
}
@media (max-width: 979px) {
.sidebar-nav-fixed {
position:static;
width: auto;
}
}
HTML
<div class="container-fluid">
<div class="row-fluid">
<div class="span3">
<div class="well sidebar-nav sidebar-nav-fixed">
...
</div><!--/.well -->
</div><!--/span-->
<div class="span9">
...
</div><!--/span-->
</div><!--/row-->
</div><!--/.fluid-container-->
второстепенное примечание: разница ширины фиксированной боковой панели составляет 10px/1%, что связано с тем, что, поскольку она не наследует ширину от div контейнера span3, поскольку она фиксирована я приходилось придумывать ширину. Это достаточно близко.
И вот еще один метод, если вы хотите, чтобы боковая панель была зафиксирована до тех пор, пока сетка не опустится для просмотра маленького экрана/мобильного устройства.
CSS
.sidebar-nav-fixed {
position:fixed;
top:60px;
width:21.97%;
}
@media (max-width: 767px) {
.sidebar-nav-fixed {
position:static;
width:auto;
}
}
@media (max-width: 979px) {
.sidebar-nav-fixed {
top:70px;
}
}
Ответ 2
В последнем Boostrap (2.1.0) есть новая функция "аффикса" JS специально для этого типа приложений, FYI.
Ответ 3
это испортит отзывчивый Webdesign. Лучше оберните фиксированную боковую панель в запросе на медиа.
CSS
@media (min-width: 768px) {
.sb-fixed{
position: fixed;
}
}
HTML
<div class="span3 sb-fixed">
<div class="well sidebar-nav">
<!-- Sidebar Contents -->
</div>
</div>
Теперь боковая панель фиксирована, если точка просмотра больше 768 пикселей.
Ответ 4
Это невозможно без javascript. Я считаю affix.js слишком сложным, поэтому я предпочитаю использовать:
Ответ 5
Я начал с ответов Андреса и в итоге получил липкую боковую панель:
HTML:
<div class="span3 sidebar-width">
<div class="well sidebar-nav-fixed">
Sidebar
</div>
</div>
<div class="span9 span-fixed-sidebar">
Content
</div> <!-- /span -->
CSS
.sidebar-nav-fixed {
position:fixed;
}
JS/JQuery:
sidebarwidth = $(".sidebar-width").css('width');
$('.sidebar-nav-fixed').css('width', sidebarwidth);
contentmargin = parseInt(sidebarwidth) + 60;
$('.span-fixed-sidebar').css('marginLeft', contentmargin);
Я предполагаю, что мне также нужна JS для обновления переменной "sidebarwidth" при изменении размера окна просмотра.
Ответ 6
Очень легко получить исправление nav или все теги, которые вы хотите. Все, что вам нужно, это написать свой тег fix, как этот, и поместить его в раздел вашего тела.
<div style="position: fixed">
test - try scroll again.
</div>
Ответ 7
В текущей версии Bootstrap (3.3.2) есть хороший способ добиться фиксированной боковой панели для навигации.
Это решение также хорошо работает с повторно введенным классом контейнера-жидкости, что означает, что легко получить гибкую полноэкранную компоновку.
Обычно вам нужно использовать фиксированные ширины и поля, или навигация будет перекрывать содержимое, но с помощью пустого столбца-заполнителя содержимое всегда будет располагаться в нужном месте.
Нижеприведенная настройка обертывает содержимое при изменении размера окна до 768 пикселей и освобождает фиксированную навигацию.
См. http://www.bootply.com/ePvnTy1VII для рабочего примера.
CSS
@media (min-width: 767px) {
#navigation{
position: fixed;
}
}
HTML
<div class="container-fluid">
<div class="row">
<div id="navigation" class="col-lg-2 col-md-3 col-sm-3">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 1</a></li>
</ul>
</div>
<div class="col-lg-2 col-md-3 col-sm-3 hidden-xs">
<!-- Placeholder - keep empty -->
</div>
<div id="main" class="col-lg-10 col-md-9 col-sm-9 fill">
...
Huge Content
...
</div>
</div>
</div>