2013-02-23 4 views
1

У меня есть JSFIDDLE, чтобы продемонстрировать макет страницы, с которой я работаю, но мне трудно достичь того, чего я хочу.Исправлена ​​боковая панель - липкая для нижнего колонтитула с использованием jQuery

Если вы прокрутите основное содержимое до конца, вы увидите, что нижняя часть боковой панели соответствует верхней части нижнего колонтитула. Вот как следует всегда смотреть. Однако, если вы измените размер или прокрутите, вы увидите, что это не так.

После нескольких дней css fiddlings я пришел к выводу, что это можно сделать только с помощью js. Пожалуйста, предоставьте рабочий скрипт, особенно, если вы заявляете, что это может быть сделано с использованием только CSS, как и другие, в моем другом вопросе, который я не смог получить ни один из ответов на работу. Проблема со всеми предложенными ответами: position:fixed удаляется, а боковая панель прокручивается с основным содержимым, это не должно происходить.

Пожалуйста, помогите достичь желаемого эффекта

+0

Извините, что я не понял, вы хотите, чтобы боковая панель имела высоту 100% или нижний колонтитул, который должен быть закреплен внизу? – martriay

+0

Нижний колонтитул не должен фиксироваться, он должен прокручиваться с основным содержимым (фиолетовым) и всегда придерживаться его нижней части независимо от высоты основного содержимого (позиция: относительная). Фиксированная боковая панель должна принимать 100% высоты под заголовком, когда нижний колонтитул не отображается. Как только вы прокрутите вниз, и нижний колонтитул станет видимым, боковая панель затем должна занять всю оставшуюся высоту между верхним и нижним колонтитулом. Дальнейшее объяснение в комментарии ниже – parliament

ответ

1

UPDATE:

Это, по-видимому, не может быть достигнуто на CSS только, вот решение JQuery.

var vh = $("body").height() - $("footer").height(); 
var sh = $("#side").height(); 

$(window).resize(function() { 
    vh = $("body").height() - $("footer").height(); 
    sh = $("#side").height(); 
}); 

$(document).scroll(function() { 
    var vs = $(document).scrollTop() + sh + $("footer").height(); 

    if(vs < vh) 
     $("#side").css("bottom", "0px"); 
    else 
     $("#side").css("bottom", (vs - vh) + "px"); 
}); 

Для тестирования используется jsFiddle.

+0

Эй, спасибо за попытку, но это не то, что я хочу. Нижний колонтитул не должен фиксироваться, как в вашем примере. Нижний колонтитул должен быть позиционным: относительным, чтобы он прокручивался с основным содержимым (фиолетовым), а нижняя часть фиксированной боковой панели прилипала к верхней части нижнего колонтитула (как в вашем примере). Вот посмотрите на это: http://jsfiddle.net/UUFLX/1/ Я установил нижний колонтитул обратно в относительный и установил фон тега тела темным оттенком зеленого. Боковая панель должна всегда покрывать эту более темную зеленую область, но когда вы прокручиваете верхний колонтитул, он выходит наружу. – parliament

+1

Mh, хорошо, я понял. И я думаю, что вы правы, этого не может быть достигнуто только с помощью css, потому что вам в основном нужно изменить размер div '# size' в зависимости от того, какая часть страницы вы прокрутили вниз. Я создал jsFiddle с помощью jQuery-решения (но его можно легко изменить только для javascript), чтобы убедиться, что я прав: [jsFiddle] (http://jsfiddle.net/goffreder/cYAct/2/). Я немного поиграю ... – goffreder

+1

Извините, я немного ошибся в предыдущей скрипке, [ЭТО] (http://jsfiddle.net/goffreder/cYAct/4/) - это хороший ... – goffreder

Смежные вопросы