Почему нижний колонтитул не переходит в нижнюю часть страницы?

#css

#css

Вопрос:

Вот JSFiddle:http://jsfiddle.net/W2UvH/1 /

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

Я не понимаю, почему мой нижний колонтитул останавливается на полпути вверх по экрану.

HTML:

 <div id="Canvas">
 <div id="Container">
   <div id="Wrapper"> 
   </div>
 </div>
</div>
<div id="SiteFooter">
<p>Copyright © All Rights Reserved.</p>
</div>
  

CSS:

 body, html {
        height: 100%;
}

#Canvas {
    position: relative;
    min-height: 100%;
}
#Container {
    margin: auto;
    background-color: #CCC;
    max-width: 802px;
    padding: 15px 0;
}
#Wrapper {
    margin-right: auto;
    margin-left: auto;
    margin-top: 15px;
    width: 730px;
    background-color: #999;
    border: 1px solid #DEDEDE;
    overflow: hidden;
    height: 1000px;
}
#SiteFooter {
    bottom: 0;
    left: 0;
    position: absolute;
    width: 100%;
    z-index: 9000;
    background-color: #FF00FF;
    height: 45px;
    border-top-width: 1px;
    border-top-style: solid;
    border-top-color: #E0E0E0;
}
  

Ответ №1:

Я вижу, что все остальные ваши элементы имеют относительные позиции. Итак, не уверен, какова ваша точная реализация, но:

 #SiteFooter {
    position: relative;
}
  

Приведенный выше код также должен сделать это за вас.

Комментарии:

1. Это сработало довольно хорошо! Я также добавил margin-bottom: -45px; в #Canvas div, потому что в противном случае нижний колонтитул, казалось, находился на расстоянии 45 пикселей от нижней части экрана, хотя #Wrapper он занимал только четверть экрана по высоте.

Ответ №2:

Вы хотите, чтобы позиция была фиксированной, а не абсолютной.

 #SiteFooter {
    position: fixed;
}
  

Комментарии:

1. Да, это заставляет его прилипать к нижней части экрана, но не к нижней части содержимого. Если содержимое превышает высоту экрана, нижний колонтитул по-прежнему отображается в том же месте. Я хочу, чтобы нижний колонтитул следовал за содержимым ТОЛЬКО тогда, когда содержимое превышает высоту экрана.