http://www.cssstickyfooter.com/からスティッキーフッターを何度も実装しました。唯一の問題は、フッターの高さが固定されていることです。内部のコンテンツに基づいてフッターを拡張できる純粋な CSS ソリューションはありますか?
JS ソリューションは悪くありませんが、CSS が最適です。
助けてくれてありがとう。
http://www.cssstickyfooter.com/からスティッキーフッターを何度も実装しました。唯一の問題は、フッターの高さが固定されていることです。内部のコンテンツに基づいてフッターを拡張できる純粋な CSS ソリューションはありますか?
JS ソリューションは悪くありませんが、CSS が最適です。
助けてくれてありがとう。
更新された回答
元の回答は 5 年以上前のものであり、フッターの高さが増減した場合にパディングが更新されないという点で失敗します。ウィンドウのサイズ変更イベントにバインドし、すべての火災でこれを呼び出すことができますが、それは少し過剰です。
window.onresize
代わりに、イベントにバインドすることをお勧めしますが、スタイルを計算したり、DOM をスラッシングしたり、 1 秒あたり何十回もレイアウトを作成したりしないようにロジックを調整します。
(function () {
"use strict";
var body = document.querySelector( "body" );
var footer = document.querySelector( "footer" );
window.addEventListener(
// Throttle logic: http://jsfiddle.net/jonathansampson/7b0neb6p/
"resize", throttle( adjustContainerPadding(), 500 )
);
function adjustContainerPadding () {
body.style.paddingBottom = window.getComputedStyle( footer ).height;
return adjustContainerPadding;
}
}());
ページが読み込まれると、すぐにメソッドを起動しますadjustContainerPadding
。このメソッドはpaddingBottom
、ボディの を、 の計算された高さに一致するように設定しfooter
ます。window.getComputedStyle
このメソッドには IE9 以上が必要であることに注意してください。
フィドル: http://jsfiddle.net/jonathansampson/7b0neb6p/
元の回答
(簡単にするために) cssstickyfooter コードを使用し、javascript を介して css 値を設定することをお勧めします (jQuery コードが続きます)。
$(function(){
var footerHeight = $("#footer").height();
$("#main").css("padding-bottom", footerHeight);
$("#footer").css("margin-top", -footerHeight);
});
コードはテストされていませんが、問題なく動作するはずです
フッターにどれだけのコンテンツが含まれていても、これにより CSS 値が自動的にリセットされます。
なぜ誰もがこのテクニックを使わないのか、私には本当にわかりません。非常に簡単
高さ、JAVASCRIPT、テーブルの固定なし
コンテンツが増えると拡張し、ない場合は下部にくっつきます
*{
margin: 0;
padding: 0;
}
html, body{
height: 100%;
}
body{
min-height: 100%;
display: flex;
flex-direction: column;
}
.content{
flex: 1;
background: #ddd;
}
<body>
<header>
Header
</header>
<div class='content'>
This is the page content
<br>
PS. Don't forget the margin: 0 and padding: 0 to avoid scrollbars (this can be also put into the body css)
</div>
<footer>
Footer
</footer>
</body>
すべてのブラウザで動作することを確認してください。
#footer { position:absolute; top:100%; width:100%; }
それをチェックしてください、それはあなたにとって役に立ちます
var マージン;
$(関数(){
var pageHeight = $('#pageKeeper').height();
var clientHeight = window.innerHeight || document.documentElement.clientHeight;
if (clientHeight > pageHeight) {
margin = clientHeight - pageHeight;
if (margin <= 120) {
$('#footer').css('top', pageHeight + 30)
}
else {
$('#footer').css('top', clientHeight - 90)
}
}
else {
margin = pageHeight - clientHeight;
$('#footer').css('top', pageHeight + 30)
}
$('#footer').show()
}))