положение прокрутки фиксируется на свитке, начинайте перед верхней части страницы

0

Как я могу заставить "боковую панель" фиксировать позицию, когда она достигает "Исправлен заголовок", а не верх страницы?

jsfiddle

$(function() {
    var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
    var footTop = $('#footer').offset().top - parseFloat($('#footer').css('marginTop').replace(/auto/, 0));

    var maxY = footTop - $('#sidebar').outerHeight();

    $(window).scroll(function(evt) {
        var y = $(this).scrollTop();
        if (y > top) {
            if (y < maxY) {
                $('#sidebar').addClass('fixed').removeAttr('style');
            } else {
                $('#sidebar').removeClass('fixed').css({
                    position: 'absolute',
                    top: (maxY - top) + 'px'
                });
            }
        } else {
            $('#sidebar').removeClass('fixed');
        }
    });
});
  • 0
    Вам просто нужно сделать что-то вроде y > (top - $('#fixedHeader').height())
  • 0
    хорошо, где именно я должен написать это?
Теги:
scroll

1 ответ

2
Лучший ответ

Эта строка:

if (y > top) {

если ваш фиксированный заголовок не имеет отступов (в противном случае вам придется учитывать это также), вы можете изменить это

if (y >= top - $('#fixedHeader').height()) {

удалить top:0px; с вашей боковой панели css и добавьте ожидаемую высоту для вашего фиксированного заголовка (в настоящее время вы дали ему высоту 40 пикселей), поэтому

#sidebar.fixed {
  position: fixed;
  top: 40px;
}

Я также удалил #fixedHeader из вашего #fixedHeader, так как вы не указали, что это было/если вы даже хотели. Если вы хотите заполнить, как уже упоминалось выше, вам придется добавить это и в свой расчет.

http://jsfiddle.net/VtPcm/706/

  • 0
    Спасибо отлично работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню