位置relativeをコンテンツなしで使用すると、フッターが上がり、absoluteで多くのコンテンツがあり、フッターが下がり、fixedで常にそこにあります。
コンテンツに関係なくページの最後に到達し、コンテンツとともに縮小および拡大する簡単な方法はありますか?
コンテンツが多い場合、最初のページにフッターが表示され、コンテンツが少ない場合は下部に表示されます。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html,body {
padding: 0;
margin: 0;
}
header {
position:fixed;
top:0;
width:100%;
height:40px;
background-color:#333;
padding:20px;
}
footer {
background-color: #333;
width: 100%;
bottom: 0;
position: relative;
}
#main{
padding-top:100px;
text-align:center;
}
</style>
</head>
<body>
<header>
header
</header>
<div id="main">
main
</div>
<footer>
footer
</footer>
</body>
</html>
フッターをposition: relative;
からposition:fixed;
に変更する場合
footer {
background-color: #333;
width: 100%;
bottom: 0;
position: fixed;
}
次に、css3を使用した例を示します。
CSS:
html, body {
height: 100%;
margin: 0;
}
#wrap {
padding: 10px;
min-height: -webkit-calc(100% - 100px); /* Chrome */
min-height: -moz-calc(100% - 100px); /* Firefox */
min-height: calc(100% - 100px); /* native */
}
.footer {
position: relative;
clear:both;
}
HTML:
<div id="wrap">
body content....
</div>
<footer class="footer">
footer content....
</footer>
更新
@ Martinが指摘したように、「position:relative」は.footer
要素では必須ではなく、clear:both
でも同じです。これらのプロパティは一例です。したがって、フッターを下部に貼り付けるために必要な最小のcssは次のとおりです。
html, body {
height: 100%;
margin: 0;
}
#wrap {
min-height: -webkit-calc(100% - 100px); /* Chrome */
min-height: -moz-calc(100% - 100px); /* Firefox */
min-height: calc(100% - 100px); /* native */
}
また、css-tricksにはこれを行うさまざまな方法を示す優れた記事があります。 https://css-tricks.com/couple-takes-sticky-footer/
HTML 5でこれを使用します...
#footer {
position: absolute;
bottom: 0;
width: 100%;
height: 60px;
background-color: #f5f5f5;
}
position: fixed
を(相対ではなく)フッター要素に設定するだけです
margin-bottom
をフッター要素の高さに少なくとも等しいmain
要素にも設定する必要がある場合があることに注意してください(例:margin-bottom: 1.5em;
)。メインコンテンツはフッターによって部分的にオーバーラップする可能性があります