Не получается закрепить footer.
Я пытался задать минимальную высоту странице вот так, чтобы footer выводился в конце:
CSS:
html, body {
height: calc(100% - 90px) /* 90 - высота navbar и footer */
}
.bottom-bar{
postion: absolute;
bottom: 45px;
}
HTML:
<body>
<navbar></navbar>
<div class="container" style="padding-top: 20px">
<div ng-view></div>
</div>
<div class="bottom-bar">
<div class="container">
<div class="col-xs-8 column">
<!-- content -->
</div>
<div class="col-xs-4 col-md-4 column">
<!-- content -->
</div>
</div>
</div>
</body>
В принципе, это работает, но есть одна ошибка - когда body растягивается, позиция footera не меняется. Как это исправить?
Вот так выводится footer сейчас:
А вот так должен выводится:
Если Вы используете bootstrap, то footer добавить класс navbar-fixed-bottom:
if( $(document).height() <= $(window).height() ){
$(".bottom-bar").addClass("navbar-fixed-bottom");
}
<script src="https://code.jquery.com/jquery-2.0.3.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.min.css" />
<navbar>Navbar</navbar>
<div class="container" style="padding-top: 20px">
<div ng-view></div>
Content
</div>
<div class="bottom-bar">
bottom-bar
<div class="container">
<div class="col-xs-8 column">
<!-- content -->
</div>
<div class="col-xs-4 col-md-4 column">
<!-- content -->
</div>
</div>
</div>
С контентом:
if( $(document).height() <= $(window).height() ){
$(".bottom-bar").addClass("navbar-fixed-bottom");
}
<script src="https://code.jquery.com/jquery-2.0.3.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.min.css" />
<navbar>Navbar</navbar>
<div class="container" style="padding-top: 20px; height: 1500px;">
<div ng-view></div>
Content
</div>
<div class="bottom-bar">
bottom-bar
<div class="container">
<div class="col-xs-8 column">
<!-- content -->
</div>
<div class="col-xs-4 col-md-4 column">
<!-- content -->
</div>
</div>
</div>
Кастомно:
if( $(document).height() <= $(window).height() ){
$(".bottom-bar").addClass("fixed");
}
.fixed {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
<script src="https://code.jquery.com/jquery-2.0.3.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/css/bootstrap.min.css" />
<navbar>Navbar</navbar>
<div class="container" style="padding-top: 20px">
<div ng-view></div>
Content
</div>
<div class="bottom-bar">
bottom-bar
<div class="container">
<div class="col-xs-8 column">
<!-- content -->
</div>
<div class="col-xs-4 col-md-4 column">
<!-- content -->
</div>
</div>
</div>
минимальная высота элементу задается через css-свойство min-height
Проще всего данную задачу решить при помощи флексбокса. Таким образом, высота футера может быть какой угодно и динамически меняться.
HTML:
<html>
<body class="page-body">
<main role="main" class="page-content"></main>
<footer class="page-footer"></footer>
</body>
</html>
CSS:
.page-body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.page-content {
flex-grow: 1;
}
Продвижение своими сайтами как стратегия роста и независимости