2012-02-04 3 views
2

У меня есть страница, где ее части сделаны из абсолютно позиционированных div.Получение нижнего колонтитула снизу, когда страница сделана из абсолютного позиционирования

Это отлично поработало, пока я не попытался получить нижний колонтитул на странице.

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

И я не могу просто поставить нижний колонтитул в нижней части потока элементов, потому что нет потока элементов. Все div's абсолютно позиционируются, поэтому, если я помещаю все, что статично или относительно позиционировано, оно направляется в верхнюю часть страницы под моим заголовком.

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

Вот jsbin: http://jsbin.com/oxefev/edit#javascript,html

Эта проблема была бы очень легко исправить, если есть способ, чтобы сделать свойство bottom CSS перейти к нижней части страницы, а не на экране.

Edit: я мог бы просто сделать его статическим позиционированы и использовать margin-top свойство, чтобы заставить его в нижней части страницы, установив его на margin-top:1000px;, но тогда я должен был бы изменить, что каждый раз, когда я добавить или удалить содержимое из страница.

+0

Это, вероятно, потому, что страница не имеет нижнего предела, она может продолжаться вечно. Есть ли причина, по которой вы не можете просто дать своему нижнему колонтитулу абсолютную позицию за пределами вашего контента? – Umbrella

+0

У страницы есть нижний предел. На каждой странице есть точка, в которой вы больше не можете прокручивать. Это то, к чему я хотел бы переместить. И я могу просто позиционировать его после последнего элемента, но что, если я сделаю более одной страницы на веб-сайте? Нижний колонтитул на обеих страницах не будет находиться на одной высоте. И даже если это не было проблемой, мне пришлось бы менять высоту нижнего колонтитула каждый раз, когда я менял контент на странице. Нет, это просто плохая идея. Было бы намного проще просто поставить его автоматически в нижней части страницы. –

+0

«нижний предел» означает, что вы всегда можете добавить больше контента ниже, нажав вниз. Это делает положение пикселя «нижним» неоднозначным. – Umbrella

ответ

2

Моей первой рекомендацией было бы: не совсем позиционировать все. Какая польза от этого?

Тем не менее, вы можете достичь того, что ищете, с нежным применением javascript. Что-то вроде:

document.getElementById('footer').style.top = document.getElementById('content-wrapper').clientHeight + 150 + 'px'; 

EDIT:

Это также похоже на работу и не будет нуждаться в переделках, если настроить высоту заголовка (+/- несколько пикселей, основанных на моделях коробки):

document.getElementById('footer').style.top = document.body.clientHeight + document.getElementById('footer').clientHeight + 'px'; 
+1

@MarkKramer После того, как вы сделали несколько веб-сайтов, вы пожалеете об этом комментарии. –

+0

Также, хорошая идея. Я знал, как это сделать, поэтому я не могу поверить, что я не думал об этом = S –

+0

Я сделал 4 веб-сайта и сделал работу над несколькими другими. Нет причин не полностью позиционировать вещи. –

0

jQuery (document) .height() возвращает корректные, согласованные результаты кросс-браузера для меня. Как только вы знаете, насколько высока позиция содержимого, нижний колонтитул должен быть легким.