Bootstrap affix не поддерживает расположение столбца
Когда я прокручиваю страницу вниз в своем браузере (хром), правый столбец проталкивается полностью влево, моя боковая панель помещается в фоновом режиме, а все правое содержимое находится над боковой панелью слева.
Это происходит только тогда, когда я применяю свойства аффикса к div div.
Если вы заметили, что в нормальных ситуациях страница отображается без проблем, как вы можете видеть ниже:
![enter image description here]()
Однако, когда я прокручиваю вниз, это выглядит так:
![enter image description here]()
Для вашей справки, вот как я реализую аффикс div:
<div class="row content-wrapper">
<div data-spy="affix" data-offset-top="200" data-offset-bottom="200" id="myAffix">
<div class="col-lg-3">
<!-- Sidebar code -->
</div>
</div>
<div class="col-lg-9">
<!-- content -->
</div>
</div>
Здесь ссылка на скрипт JS, так что вы можете увидеть, что проблема происходит вживую:
Здесь скрипт JS для просмотра ошибки:
http://jsfiddle.net/fH46S/2/
Как я могу это исправить?
Ответы
Ответ 1
У вас есть пара вещей, которые здесь происходят. Первая проблема заключается в том, что вы пытаетесь использовать подставку Bootstrap в сочетании с ее аффикс-функцией. Вы заметите, что на небольших экранах функция аффикса по-прежнему активна, и когда вы прокручиваете экран вниз, она накладывается поверх раздела результатов.
Вы можете исправить это, добавив контейнер DIV вне элемента #myAffix
, а затем используя position: relative !important;
в сочетании с запросом на носитель, установленным на 1200 пикселей, чтобы отключить функцию аффикса для устройств с небольшой шириной экрана.
Вторая вещь, которая происходит, - это фиксированное положение вашего прикрепленного элемента, вне позиции. Выньте
#myAffix{
left: 0px;
}
и добавьте
.affix{
top: 0px !important;
}
Теперь у вас будет фиксированная навигационная панель с левой стороны, которая будет работать без проблем с остальной частью страницы.
Чтобы увидеть все это вместе, ознакомьтесь с обновленным примером скрипта
Ответ 2
Здесь вы можете начать: http://jsfiddle.net/panchroma/H2KU7/
Он по-прежнему нуждается в refinememt, но важный бит сделан. Ключом к этому является то, что когда вы используете аффикс, Bootstrap JS применяет класс .affix к div, на который вы следите, после установленного количества прокрутки. Этот класс аффикса имеет css
position:fixed;
что и останавливает div от прокрутки. Он также берет div из нормального потока, поэтому вы получаете перекрытие.
Мое решение состояло в том, чтобы обернуть новый div вокруг панели левой стороны и применить к нему поведение аффикса. Ваш исходный код выводил <div class="col-lg-3">
из нормального потока, и это было корнем проблемы.
HTML
<div class="col-lg-3">
<div class="wrap" data-spy="affix" data-offset-top="200" data-offset-bottom="200" id="myAffix">
<!-- your nav div here -->
</div> <!-- close wrap -->
</div> <!-- close col-lg-3 -->
ИЗМЕНИТЬ
Чтобы уточнить ваш css для поведения столбца левой руки, когда он прикреплен, введите в левую колонку что-то вроде
.col-lg-3 .wrap.affix{
/* custom afix padding and styling here */
}
Надеюсь, это поможет!
Ответ 3
Установите два почти одинаковых навигатора. Один из них имеет класс = "navbar navbar-fixed-top", id = "nav_first" и style = "visibility: hidden;",
Второй имеет class= "navbar" и id = "nav_second". Кроме этих различий, эти навигаторы являются тотальными.
Также добавьте этот код js на страницу.
$(document).ready(function(){
console.log("document is ready");
$(document).scroll(function(){
console.log("hoook");
var dist = elementOffset = $('#nav_second').offset().top - $(window).scrollTop();
console.log("dist: "+dist);
if(dist<=0){
$("#nav_first").css("visibility","visible");
}
else{
$("#nav_first").css("visibility","hidden");
}
});
});