Существует много хороших и хорошо протестированных рецептов для нижнего колонтитула, который всегда находится в нижней части страницы, но не является фиксированным (или перекрывает содержимое). Вот один, который работает для меня: http://ryanfait.com/sticky-footer/
Короче говоря, это работает следующим образом:
HTML:
<html><body>
<div id="wrapper>SOME CONTENT</div><footer></footer>
</body></html>
CSS:
* {
margin: 0;
}
html, body {
height: 100%;
}
#wrapper {
min-height: 100%;
height: 100%;
margin: 0 auto -4em;
}
footer {
height: 4em;
}
Хитрость заключается в том, что #wrapper
вынужден использовать 100% доступной высоты, но нижняя часть поля оставляет некоторое пространство для нижнего колонтитула (отрицательный запас равен размеру нижнего колонтитула).
При создании приложения с одной страницей некоторые фреймворки javascripts, такие как Ember.js, добавляют дополнительные div к нашей структуре документа (например, для обработки событий). Это создает дополнительную оболочку вокруг нашего оригинального документа, который может выглядеть следующим образом:
<html><body>
<div class="framework-container">
<div id="wrapper>SOME CONTENT</div><footer></footer>
</div>
</body></html>
Этот дополнительный div
разрушает нашу настройку CSS. Чтобы улучшить ситуацию, мы хотим сказать, что framework-container
должен вести себя точно как body
, поэтому мы можем попытаться добавить:
.framework-container {
position: relative;
height: 100%;
min-height: 100%;
}
И это почти работает: если контент меньше высоты страницы. В противном случае между нижним колонтитулом и нижней частью страницы есть заметное расстояние, которое мы не можем принять.
Кто-нибудь знает чистое решение CSS для этой проблемы?
Я не уверен, что вы сказали, что обертка работает или нет, но вы можете сказать Ember вставить приложение в конкретный элемент и не будет вставлять какие-либо элементы вне (выше) этого элемента.
Установите корневой элемент
App = Em.Application.create({
rootElement: '#body'
});
HTML
<div id="container">
<div id="header">I'm a header</div>
<div id="body"></div>
<div id="footer">I'm a footer</div>
</div>
CSS
html,
body {
margin:0;
padding:0;
height:100%;
}
#container {
min-height:100%;
position:relative;
}
#header {
background:#ff0;
padding:10px;
}
#body {
padding:10px;
padding-bottom:60px; /* Height of the footer */
}
#footer {
position:absolute;
bottom:0;
width:100%;
height:60px; /* Height of the footer */
background:#6cf;
}
http://emberjs.jsbin.com/OPaguRU/1/edit
Я полностью вызвал это из: http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page
rootElement: "body"
и Ember не будет создавать никаких дополнительных div'ов 'top`-иерархии сверх тех, которые я определил в своих шаблонах?