.container {
min-height: 100vh;
display: flex;
flex-direction: column;
}
header {
background: #eeeeeeee;
position: sticky;
top: 0px;
}
main {
flex-grow: 1;
}
footer {
background: #eeeeeeee;
position: sticky;
bottom: 0px;
}
<div class="container">
<header>header</header>
<main>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum repellat, vitae natus ipsum qui iste, placeat provident nemo voluptas magnam, architecto explicabo molestias culpa! Eos voluptate odit ut dicta asperiores aliquam fugiat. Similique soluta velit fugit ex magnam nemo hic delectus, ratione sequi ea commodi corrupti a voluptatibus non quos? Iure eum atque vel! Assumenda, libero. Labore, quibusdam nesciunt, soluta ullam quis consequatur dolore, blanditiis veritatis nisi impedit consectetur perspiciatis. Sit, amet quidem dolore recusandae voluptate aperiam! Doloribus porro rem suscipit minus. Voluptate consequatur laboriosam a aspernatur omnis ullam consectetur dignissimos, aliquam quasi eligendi, ipsam non laborum quam quisquam rem, porro explicabo eos voluptas? Maxime aliquam quam quas dolorum a dolorem amet, nulla quidem sunt itaque eveniet dignissimos explicabo velit sint earum, quos asperiores dolor ad? Accusamus similique inventore, sunt vero ullam iusto neque necessitatibus veniam minima. Quasi ipsa quod rerum deleniti laboriosam accusamus distinctio quaerat cumque quas? Dolorem beatae, totam dolores repudiandae esse error vero aut, quam impedit delectus natus quis libero tenetur fugiat illo officiis, porro amet. Velit a praesentium totam amet deleniti architecto necessitatibus dolore sequi id, atque numquam sunt harum exercitationem illum facere debitis officiis nihil repellat cupiditate maiores? Vero hic quasi accusamus provident tempora quo error magni voluptatibus harum, adipisci rem repellat facilis, quae commodi tenetur, vitae quos illo aspernatur necessitatibus? Eligendi officia voluptas, ratione est natus ut saepe tenetur! Alias facilis obcaecati repudiandae hic natus distinctio sequi doloremque blanditiis eos quasi, ad odio dolorem iste, voluptatibus ullam, praesentium vel accusamus beatae id maxime inventore? Laudantium cupiditate eum eos quae nulla, veritatis sunt tenetur saepe placeat libero quaerat iusto a? Eos blanditiis sit animi reprehenderit nemo? Adipisci optio harum quas sit distinctio assumenda tempora inventore enim aliquid. Earum nisi nemo perspiciatis. Harum suscipit, adipisci ullam porro, quo possimus eaque veniam corporis, cumque ut aliquid voluptates ipsam. Aperiam beatae necessitatibus optio dicta fugiat aspernatur aliquid assumenda cumque placeat similique. Natus fugiat facilis quae, voluptatibus deserunt repellendus voluptates blanditiis illo voluptatem iure, quasi veritatis labore aliquid perspiciatis nesciunt architecto. Saepe incidunt sequi consectetur! Rem asperiores, labore saepe vitae error totam mollitia praesentium ratione ducimus, quidem earum blanditiis animi vero optio officiis perferendis dolores, aperiam impedit molestias expedita. Molestiae quod ipsa totam ad! Quis tenetur cum, quas sunt dolore, facere qui ipsam expedita, eum cupiditate veritatis libero. Inventore quisquam, totam facilis eum numquam iste odio magnam in excepturi vero? Illum eveniet suscipit quis aliquid odio nobis architecto voluptatibus non! Facere ad debitis commodi numquam excepturi consectetur reiciendis ipsum nulla libero optio est a labore qui at accusamus nostrum modi, consequuntur eveniet atque culpa dicta doloremque unde? Suscipit, dolore, recusandae dolores ipsam cupiditate quas qui esse labore doloribus repudiandae mollitia iure sed ipsum. Reiciendis porro quaerat consequuntur illo cumque odit, facere distinctio sunt repudiandae laudantium iusto eos aut pariatur, doloribus eligendi consequatur minima non nisi, quas ducimus esse perspiciatis beatae sequi? Autem quis recusandae cumque, ratione dicta eaque asperiores nesciunt obcaecati quae debitis aliquam non, reprehenderit vitae. Optio nobis ipsum autem, blanditiis nulla asperiores sequi rem quo laboriosam incidunt?
</main>
<footer>footer</footer>
</div>