<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<main>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, harum. Sapiente dignissimos in provident fugit voluptatem commodi, ipsa blanditiis assumenda quasi amet excepturi nostrum voluptatum molestiae ratione, corrupti hic voluptatibus.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum accusamus cum voluptas voluptate esse asperiores cupiditate velit quaerat optio, praesentium ipsa, deserunt veniam facilis libero accusantium! Similique accusamus assumenda beatae amet harum delectus quisquam minima quidem id veniam a eaque iste labore distinctio quia cupiditate, ullam suscipit. Repellendus, porro, officiis!
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero atque officia, hic iure placeat, dolores amet eaque quae, eveniet laboriosam voluptatibus fugit velit aut. Facilis expedita, id quasi asperiores molestiae, numquam provident consectetur maxime ad dolorem illo, voluptas dolore accusantium quam deleniti enim ratione doloremque cum omnis ea maiores, deserunt earum eveniet minima eaque. Soluta earum amet esse rem vitae eaque enim aut obcaecati laudantium provident eius delectus nulla doloremque omnis quisquam, ut eos modi, autem tenetur! Deserunt pariatur cum aspernatur aperiam, obcaecati libero, tenetur veritatis aut praesentium architecto optio perspiciatis quo ut. Atque, soluta doloribus recusandae quibusdam ipsam qui!
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id, unde.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus perspiciatis molestiae nemo soluta nesciunt alias porro impedit, perferendis molestias possimus mollitia asperiores laboriosam consectetur enim odit, animi facere earum consequatur in veniam neque quae esse. Beatae iure laboriosam optio? Pariatur.
</p>
</main>
<footer class="page-footer">
FOOTER
</footer>
html {
/* Растягиваем документ на всю высоту окна */
height: 100%;
}
body {
position: relative;
/* Растягиваем body по высоте html */
min-height: 100%;
}
main {
/* Выставляем отступ с высотой footer */
padding-bottom: 30px;
}
footer {
/* Позиционируем footer внизу main */
position: absolute;
bottom: 0;
width: 100%;
/* Высота footer */
height: 30px;
}
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
/* Чтобы занимал оставшееся пространство */
flex-grow: 1;
}
footer {
/* Чтобы footer не уменьшался */
flex-shrink: 0;
}
body {
display: table;
min-height: 100vh;
}
main {
display: table-row;
/* Чтобы ряд занимал всё оставшееся пространство, так как табличная разметка не позволит ему вытолкнуть header и footer */
height: 100%;
}
// Высчитываем высоту footer и делаем соответствующий отступ от main:
function footer(){
$('main').css('padding-bottom',$('footer').height());
}
window.addEventListener('load',footer);
window.addEventListener('resize',footer);
html {
/* Растягиваем документ на всю высоту окна */
height: 100%;
}
body {
position: relative;
/* Растягиваем body по высоте html */
min-height: 100%;
}
main {
/* Выставляем отступ с высотой footer по умолчанию */
padding-bottom: 30px;
}
footer {
/* Позиционируем footer внизу main */
position: absolute;
bottom: 0;
width: 100%;
/* Высота footer по умолчанию */
height: 30px;
}
html {
/* Растягиваем документ на всю высоту окна */
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
}
body {
position: relative;
/* Растягиваем body по высоте html */
min-height: 100%;
}
aside {
float: left;
background: skyblue;
height: 100%;
width: 300px;
overflow: auto;
}
main {
overflow: hidden;
position: absolute;
top: 0;
bottom: 20px;
left: 0;
right: 0;
}
article {
overflow: auto;
height: 100%;
background: green;
}
footer {
background: #ddd;
/* Позиционируем footer внизу main */
position: absolute;
bottom: 0;
width: 100%;
/* Высота footer */
height: 20px;
}
<body>
<main>
<aside>
sidebar
</aside>
<article>
Ваш вопрос неверно сформулирован, из-за чего и все ответы неверные. Проблема не в футере, а в контенте. Основному блоку нужно задать высоту всего экрана, поставить overflow: auto и отнять от него высоту футера.
Таким образом, область прокрутки будет только у основного блока и залазить на футер он не будет.
Выглядеть это будет так:Ваш вопрос неверно сформулирован, из-за чего и все ответы неверные. Проблема не в футере, а в контенте. Основному блоку нужно задать высоту всего экрана, поставить overflow: auto и отнять от него высоту футера.
Таким образом, область прокрутки будет только у основного блока и залазить на футер он не будет.
Выглядеть это будет так:Ваш вопрос неверно сформулирован, из-за чего и все ответы неверные. Проблема не в футере, а в контенте. Основному блоку нужно задать высоту всего экрана, поставить overflow: auto и отнять от него высоту футера.
Таким образом, область прокрутки будет только у основного блока и залазить на футер он не будет.
Выглядеть это будет так:Ваш вопрос неверно сформулирован, из-за чего и все ответы неверные. Проблема не в футере, а в контенте. Основному блоку нужно задать высоту всего экрана, поставить overflow: auto и отнять от него высоту футера.
Таким образом, область прокрутки будет только у основного блока и залазить на футер он не будет.
Выглядеть это будет так:Ваш вопрос неверно сформулирован, из-за чего и все ответы неверные. Проблема не в футере, а в контенте. Основному блоку нужно задать высоту всего экрана, поставить overflow: auto и отнять от него высоту футера.
Таким образом, область прокрутки будет только у основного блока и залазить на футер он не будет.
Выглядеть это будет так:
</article>
</main>
<footer>
footer
</footer>
</body>
/*
Sticky Footer Solution
by Steve Hatcher
http://stever.ca
http://www.cssstickyfooter.com
*/
* {margin:0;padding:0;}
/* must declare 0 margins on everything, also for main layout components use padding, not
vertical margins (top and bottom) to add spacing, else those margins get added to total height
and your footer gets pushed down a bit more, creating vertical scroll bars in the browser */
html, body {height: 100%;}
#wrap {min-height: 100%;}
#main {overflow:auto;
padding-bottom: 180px;} /* must be same height as the footer */
#footer {position: relative;
margin-top: -180px; /* negative value of footer height */
height: 180px;
clear:both;}
/*Opera Fix*/
body:before {/* thanks to Maleika (Kohoutec)*/
content:"";
height:100%;
float:left;
width:0;
margin-top:-32767px;/* thank you Erik J - negate effect of float*/
}
/* IMPORTANT
You also need to include this conditional style in the <head> of your HTML file to feed this style to IE 6 and lower and 8 and higher.
<!--[if !IE 7]>
<style type="text/css">
#wrap {display:table;height:100%}
</style>
<![endif]-->
*/
您仍然可以通过检查来执行此操作(如果内容很少,则修复它,否则它是静态的)。
很多内容:
小内容:
另一种选择是使用flexbox。
1.固定页脚高度的绝对定位解决方案
2. 响应式页脚高度的 Flexbox 解决方案
3.通过表格解决自适应页脚高度
4. 使用 jQuery 实现响应式页脚高度的解决方案
您的问题表述不正确,这就是为什么所有答案都不正确的原因。问题不在页脚,而在内容。主块需要设置整个屏幕的高度,设置
overflow: auto并从中减去页脚的高度。因此,只有主块会有滚动区域,它不会爬到页脚上。
它看起来像这样:
有这样一个网站CSS Sticky Footer。
如果您使用他们的 CSS 和 HTML,页脚将始终位于底部,并且此解决方案适用于自 IE8 以来的大量浏览器。
这是一个代码片段,如果您稍微调整一下您的布局,一切都会正常进行。