Фиксированной боковой панели навигации в жидкости Twitter начальной загрузки 2.0


можно ли сделать боковую навигацию всегда фиксированной на прокрутке в жидком макете?

7 92

7 ответов:

Примечание: есть плагин bootstrap jQuery, который делает это и многое другое, что было введено несколько версий после того, как этот ответ был написан (почти два года назад) под названием прикрепить. Этот ответ применяется только в том случае, если вы используете 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/

обновление

исправлена моя демонстрация для поддержки адаптивного загрузочного листа, теперь он течет с адаптивной функцией загрузочного листа.

Примечание: это демо течет с верхней фиксированной navbar, так что оба элемента становятся 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% разница в ширине фиксированной боковой панели, это связано с тем, что поскольку он не наследует ширину от контейнера span3 div, потому что он фиксирован, мне пришлось придумать ширина. Это достаточно близко.

и вот еще один метод, если вы хотите сохранить боковую панель фиксированной до тех пор, пока сетка не упадет для малого экрана/мобильного просмотра.

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;
    }
}

демо редактировать здесь.

последний Boostrap (2.1.0) имеет новую функцию JS "affix" специально для этого типа приложения, FYI.

это испортит отзывчивый веб-дизайн. Лучше оберните фиксированную боковую панель в медиа-запрос.

CSS

@media (min-width: 768px) { 
  .sb-fixed{
    position: fixed;
  } 
}

HTML

<div class="span3 sb-fixed">
   <div class="well sidebar-nav">
      <!-- Sidebar Contents -->
   </div>
</div>

теперь боковая панель фиксируется только, если viewpot больше, чем 768px.

Это невозможно без javascript. Я нахожу аффикс.js слишком сложный, поэтому я скорее использую:

stickyfloat

Я начал с ответов Андреса и в конечном итоге получил липкую боковую панель, как это:

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" при изменении размера видового экрана.

очень легко получить fix nav или все теги, которые вы хотите. Все, что вам нужно, это написать свой тег fix вот так, и поместить его в раздел вашего тела

   <div style="position: fixed">
       test - try  scroll again. 
   </div>

С текущей версией Bootstrap (3.3.2) есть хороший способ добиться фиксированной боковой панели для навигации.

это решение также хорошо работает с повторно введенным классом контейнера-жидкости, что означает, что легко можно иметь отзывчивый полноэкранный макет.

обычно вам нужно будет использовать фиксированные ширины и поля или навигация будет перекрывать содержимое, но с помощью пустого столбца заполнителя содержимое всегда расположено справа место.

приведенная ниже настройка обертывает содержимое при изменении размера окна до менее 768px и освобождает фиксированную навигацию.

см.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>