У меня есть страница со структурой что-то вроде этого:
<div id="header"></div>
<div id="messages"></div>
<div class="content">
<div id="sidebar"></div>
<div id="content"></div>
<div id="other_stuff"></div>
</div>
Заголовок - это заголовок страницы. Сообщения div - это место, где я нажимаю сообщения. Иногда он заполнялся, иногда он пуст. Боковая панель - это меню навигации. Контент - это длинный прокручиваемый div. И другие вещи - это другой материал.
Мне нужно, чтобы боковая панель фиксировалась на странице с левой стороны при прокрутке содержимого. Но боковая панель никогда не должна перекрывать сообщения и заголовок. Другими словами, когда я просматриваю страницу, заголовок и сообщения обычно прокручиваются с контентом. Но когда я просматриваю страницу, боковая панель не должна накладывать сообщения и заголовок div.
Я использовал position: fixed;
свойства CSS position: fixed;
для этого, но с этим боковым окном свойств накладывает сообщения. Как я могу исправить это с помощью CSS и javascript/jQuery?
Если я исправлю вас, вы хотите, чтобы боковая панель была исправлена, начиная с определенной точки.
Это может быть достигнуто с помощью jQuery. Есть много способов, по крайней мере, я знаю. Вот чистая версия jQuery, которую я использую в таких случаях (если вы не хотите внедрять другие внешние JS-библиотеки)
jQuery(document).ready(function ($) {
$fixed_id = $('#Mod128, #Mod190'); //classess or IDs of the modules you want to stick
$(window).scroll(function(){
if($(window).scrollTop()>254) //amount of pixels from the top of the viewport when the sticky styles applied
{
$fixed_id.css({position:"fixed", top:0, width:"18%"}); //sticky styles items when scroll to a particular place
}
});
});
Другие способы сделать это, используя другие JS-библиотеки, я знаю 2 из них:
2) stickyjs.com
Надеюсь, это поможет.
Это хорошо, если вы можете сделать jsfiddle, или я думаю, что что-то вроде ниже кода может вам помочь. Исправьте высоту заголовка и сообщений и укажите маржу на боковой панели с общей высотой заголовка и сообщений.
#header, #messages {
height:3em;
} .content #sidebar { position:fixed; margin-top:3em; width:5em; }
.content #sidebar { position:fixed; margin-top:3em; width:5em; }
.content #content,.content #other_stuff{
width:3em;
margin-left:5em;
}