I need to put a sticky footer on my pages , however i don't have a definite height set for my footer . On smaller screens - the rows resize and footer becomes longer .
Therefore , the default sticky footer example provided on getbootstrap does not work since it requires a fixed footer height.
Any way to implement this ?
/* Sticky footer styles
-------------------------------------------------- */
html {
position: relative;
min-height: 100%;
}
body {
/* Margin bottom by footer height */
margin-bottom: 60px;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 60px;
line-height: 60px; /* Vertically center the text there */
background-color: #f5f5f5;
}
/* Custom page CSS
-------------------------------------------------- */
/* Not required for template or sticky footer method. */
body > .container {
padding: 60px 15px 0;
}
.footer > .container {
padding-right: 15px;
padding-left: 15px;
}
code {
font-size: 80%;
}
Now that Bootstrap 4 is flexbox, a sticky footer can be done using...
<wrapper class="d-flex flex-column">
<nav>
</nav>
<main class="flex-fill">
</main>
<footer>
</footer>
</wrapper>
body, wrapper {
min-height:100vh;
}
.flex-fill {
flex:1 1 auto;
}
Demo: Bootstrap 4 Sticky Footer (4.0.0)
Note: The flex-fill
utility class will be included in the next Bootstrap 4.1 release. So after that release the extra CSS for flex-fill won't be needed.
Use min-height
instead of height to make it variable height.
https://codepen.io/hunzaboy/pen/prxgRb
Also on smaller screens just remove the absolute position and make it static.
A very simple way is using a navbar as a footer. It comes with a fixed-bottom class that is really handy. To change your spacing you can see the documentation here... https://getbootstrap.com/docs/4.2/utilities/spacing/
<nav class="navbar fixed-bottom navbar-light bg-light">
<a class="navbar-brand" href="#">Fixed bottom</a>
</nav>
This script dynamically add fixed-bottom
class if page height less than viewport height:
jQuery(function ($) {
function fixedFooter(){
var $footer = $('.site-footer');
if(typeof $footer === 'undefined') return 0;
$footer.removeClass('fixed-bottom');
if($(window).height() > $body.height()){
$footer.addClass('fixed-bottom');
}
}
// call `fixedFooter()` when page height changed (not by viewport resize)
if(typeof window.lastPageHeight === 'undefined'){
setInterval(function () {
if(window.lastPageHeight !== $body.height()){
fixedFooter();
}
}, 1000);
}
window.lastPageHeight = $body.height();
}
fixedFooter(); // first call
// call `fixedFooter()` when viewport height changed
window.addEventListener('resize', function(){
fixedFooter();
}, true);
});
Style for prevent overlapping with modals, fixed sidebars etc...
.site-footer.fixed-bottom {
z-index: 1 !important;
}
来源:https://stackoverflow.com/questions/45912296/bootstrap-4-sticky-footer-dynamic-footer-height