Сохранение нижнего колонтитула в нижней части страницы с помощью Google MDL

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

Я использую Google Material Design Lite, и нижний колонтитул не будет оставаться внизу страницы.

Я видел различные исправления, используя этот трюк

<div class="content">
    <div class="header"></div>
    <div class="body"></div>
    <div class="footer"></div>
</div>

и я попытался использовать этот метод

#footer {
   bottom: 0;
   width: 100%;
   position: absolute; (or fixed)
}

Первый вариант не работает, потому что Material Design Lite фактически использует тег footer. И, честно говоря, я вообще не хочу этого делать, потому что это кажется мне небрежным.

Метод CSS для нижнего колонтитула почти работает, но есть несколько проблем. При использовании position: absolute; он не всегда поддерживает нижний колонтитул в нижней части страницы, и иногда он охватывает контент. Когда я пытаюсь fixed, нижний колонтитул всегда хранится в нижней части страницы, но когда имеется достаточное количество содержимого для прокрутки страницы, оно остается в нижней части экрана и охватывает контент. Оба fixed и absolute будут удерживать нижний колонтитул в нижней части экрана, а не страницу, а это означает, что при наличии достаточного содержимого для прокрутки содержимого нижнего колонтитула на краю экрана.

Поведение для fixed может быть воспроизведено в 100% случаев, но для absolute я не понял, что заставляет его работать иногда, а не другие.

Это код, который у меня есть для нижнего колонтитула

<footer class="mdl-mini-footer">
    <div class="mdl-mini-footer--left-section">
        <button class="mdl-mini-footer--social-btn social-btn social-btn__twitter">
            <span class="visuallyhidden">Twitter</span>
         </button>
         <button class="mdl-mini-footer--social-btn social-btn social-btn__blogger">
            <span class="visuallyhidden">Facebook</span>
         </button>
         <button class="mdl-mini-footer--social-btn social-btn social-btn__gplus">
             <span class="visuallyhidden">Google Plus</span>
         </button>
     </div>
     <div class="mdl-mini-footer--right-section">
         <button class="mdl-mini-footer--social-btn social-btn__share">
             <i class="material-icons" role="presentation">share</i>
             <span class="visuallyhidden">share</span>
         </button>
     </div>
</footer>`

У кого-нибудь еще была эта проблема или есть идеи по решению?

Изменить, чтобы добавить дополнительную информацию:

Проблема не в высоте body или html, они оба на 100%.

Полный код макета

<body>
  <div class="site mdl-layout mdl-js-layout">           
    <header class="mdl-layout__header mdl-layout__header--waterfall">
        <div class="mdl-layout__header-row">
            <!-- Header Content Here -->
        </div>
    </header>
    <div class="mdl-layout__drawer">
        <!-- Drawer Content -->
    </div>
    <main class="mdl-layout__content">
         <!-- View Content Here -->
    </main>
    <footer class="mdl-mini-footer">
        <!-- Footer Content -->
    </footer>
    <div class="mdl-layout__obfuscator"></div>
  </div>
</body>

Ответы

Ответ 1

Мне удалось это сделать:

1. Без заголовка водопада

  • Перемещение элемента нижнего колонтитула вне основного элемента
  • Задайте стиль элемента .mdl-layout__content для "flex: 1 0 auto"

Пример:

<body>
  <div class="mdl-layout mdl-js-layout">
    <header class="mdl-layout__header">
      ...
    </header>
    <main class="mdl-layout__content" style="flex: 1 0 auto;">
      ...
    </main>
    <footer class="mdl-mega-footer">
      ...
    </footer>
  </div>
</body>

2. С заголовком водопада

  • Просто перемещая элемент нижнего колонтитула вне основного элемента

Пример:

  <body>
    <div class="site mdl-layout mdl-js-layout">           
      <header class="mdl-layout__header mdl-layout__header--waterfall">
          <div class="mdl-layout__header-row">
              <!-- Header Content Here -->
          </div>
      </header>
      <div class="mdl-layout__drawer">
          <!-- Drawer Content -->
      </div>
      <main class="mdl-layout__content">
          <!-- Main Content -->
      </main>
      <footer class="mdl-mini-footer">
          <!-- Footer Content -->
      </footer>
    </div>
  </body>

Тесты:

Ответ 2

У меня была та же проблема, где mdl-mini-footer перекрывал мой mdl-layout__content.

Мое решение состояло в том, чтобы разделить теги, т.е.

<main class="mdl-layout__content">
  ...
</main>
<footer class="mdl-mini-footer">
  ...
</footer>

и модифицировать классы следующим образом (беря вдохновение из первого решения @K.A.D выше)

.mdl-layout__content {
  flex: 1 0 auto;
}

.mdl-mini-footer {
  flex: 0 0 auto;
}

Модификация класса нижнего колонтитула была необходима, чтобы остановить нижний колонтитул, растущий в пространствах, в которые я не хотел (первый 0 в 0 0 auto).

Ответ 3

Попробуйте это

    <main class="mdl-layout__content">
        <div class="page-content">

        </div>
        <div class="mdl-layout-spacer"></div>
        <footer class="mdl-mini-footer">
            <div class="mdl-mini-footer__left-section">
                <div class="mdl-logo">Title</div>
                <ul class="mdl-mini-footer__link-list">
                    <li><a href="#">Help</a></li>
                    <li><a href="#">Privacy & Terms</a></li>
                </ul>
            </div>
        </footer>
    </main>

Просто добавьте:

<div class="mdl-layout-spacer"></div>

После:

<div class="page-content"></div>

Ответ 4

Я столкнулся с той же проблемой, что и вы. После просмотра многих руководств и двух вопросов, подобных этому, я заглянул в один из шаблонов, предоставленных MDL, и заметил, что нижний колонтитул включен в основной раздел. Я считаю, что это очень контрастно интуитивно, но элемент нижнего колонтитула должен быть указан непосредственно перед закрывающим тегом, а не после него. См. Снимок экрана, который теперь отлично работает. Я работаю на веб-сайте TEDx GEC. Посетите веб-сайт TECX TECX, чтобы увидеть нижний колонтитул в действии. (Изменения будут добавлены 20-07-2016, любой посетитель до этого заметит, что нижний колонтитул перекрывает содержимое. Здесь снимок экрана: Обратите внимание, что основной тег закрытия после нижнего колонтитула.