数行のコンテンツしかないページがあります。フッターを一番下に押し込みたい。
<div id="footer"></div>
使いたくない
#footer
{
position:fixed;
bottom:0;
}
別名スティッキーフッター
これはjQueryなしで可能ですか?
助言がありますか?
このFlexboxソリューションは、実装がより簡潔ではるかに簡単です。
<body>
<div class="content">
content
</div>
<footer class="footer"></footer>
</body>
html, body {
height: 100%;
}
body {
display: flex;
flex-direction: column;
}
.content {
flex: 1 0 auto;
}
.footer {
flex-shrink: 0;
}
divs
の中に必要なものを必ずラップしてくださいbody
。
これは CSS Grid を使用したソリューションです。これは、2021 年にそれを行うための最良の方法です。
html, body {
margin: 0;
height: 100%;
}
body {
display: grid;
grid-gap: 10px;
grid-template-columns: 1fr;
grid-template-areas: "main" "footer";
grid-template-rows: 1fr 80px;
}
main {
background-color: #F8BBD0;
grid-area: main;
}
footer {
background-color: #7E57C2;
grid-area: footer;
}
<body>
<main>The content</main>
<footer>Footer</footer>
</body>
位置固定を使用しない、 Ryan Faitによる別のスティッキー フッターがあります。
* {
margin: 0;
}
html, body {
height: 100%;
}
.wrapper {
min-height: 100%;
height: auto !important; /* This line and the next line are not necessary unless you need IE6 support */
height: 100%;
margin: 0 auto -155px; /* the bottom margin is the negative value of the footer's height */
}
.footer, .push {
height: 155px; /* .push must be the same height as .footer */
}
Steve Hatcher によるスティッキー フッター ソリューションを試す
/*
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 the 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]-->
*/
最初にすべてのメイン コンテンツを div 要素でラップし、「ラッパー」のクラスを指定します (または、任意の名前を付けます)。
HTML:
<body>
<div class="wrapper">
<h1>Main Content</h1>
</div>
<footer>
<p>Footer Content</p>
</footer>
</body>
ここで、フッターの高さを指定してください。
次に、calc() 関数を使用して、ラッパーの高さをビューポート (ディスプレイ) の高さからフッターの高さを引いた値に設定します。
.wrapper {
min-height: calc(100vh - 50px);
}
footer {
height: 50px;
}
ここで、ラッパー コンテンツに余分なマージンがある場合は、それを反映するために、ビューポートの高さから差し引くピクセルの量を増やす必要があります。それ以外は、これは非常に簡単で迅速な修正です。JavaScript は不要で、CSS ルールは 2 つだけです。