フッターをページの下部に固定し、中央に配置する必要があります。フッターの内容は常に変更される可能性があるため、margin-leftを使用して中央に配置することはできません。xxpx;マージン右:xxpx;
問題は、何らかの理由でこれが機能しないことです:
#whatever {
position: fixed;
bottom: 0px;
margin-right: auto;
margin-left: auto;
}
ウェブをクロールしましたが、何も見つかりませんでした。コンテナdivとnadaを作成してみました。他の組み合わせとガーニッシュを試しました。どうすればこれを実現できますか?
ありがとう
このようなスティッキーフッターソリューションを使用する必要があります。
* {
margin: 0;
}
html, body {
height: 100%;
}
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -142px; /* the bottom margin is the negative value of the footer's height */
}
.footer, .Push {
height: 142px; /* .Push must be the same height as .footer */
}
このような他のものがあります。
* {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, #wrap {height: 100%;}
body > #wrap {height: auto; min-height: 100%;}
#main {padding-bottom: 150px;} /* must be same height as the footer */
#footer {position: relative;
margin-top: -150px; /* negative value of footer height */
height: 150px;
clear:both;}
/* CLEAR FIX*/
.clearfix:after {content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix { height: 1%;}
.clearfix {display: block;}
htmlで:
<div id="wrap">
<div id="main" class="clearfix">
</div>
</div>
<div id="footer">
</div>
改訂 コード:ダニエルカニス :
cSSで次の行を変更するだけです
.problem {text-align:center}
.enclose {position:fixed;bottom:0px;width:100%;}
およびhtml:
<p class="enclose problem">
Your footer text here.
</p>
JQueryソリューション
$(function(){
$(window).resize(function(){
placeFooter();
});
placeFooter();
// hide it before it's positioned
$('#footer').css('display','inline');
});
function placeFooter() {
var windHeight = $(window).height();
var footerHeight = $('#footer').height();
var offset = parseInt(windHeight) - parseInt(footerHeight);
$('#footer').css('top',offset);
}
<div id='footer' style='position: fixed; display: none;'>I am a footer</div>
古いCSSをハックするよりもJSを実装する方が簡単な場合があります。
問題はposition: static
にあります。静的とは、ポジションに対して一切何もしないことを意味します。 position: absolute
はあなたが望むものです。ただし、要素を中央に配置するのはまだ難しいです。以下が動作するはずです:
#whatever {
position: absolute;
bottom: 0px;
margin-right: auto;
margin-left: auto;
left: 0px;
right: 0px;
}
または
#whatever {
position: absolute;
bottom: 0px;
margin-right: auto;
margin-left: auto;
left: 50%;
transform: translate(-50%, 0);
}
ただし、最初の方法をお勧めします。私はこの答えからセンタリング手法を使用しました: divの絶対位置要素をセンタリングする方法
「別のdivの問題div」を囲み、このdivを囲いdivと呼びます... cssで囲んだdivの幅を100%にし、位置を0で固定します...次に問題のdivを挿入します囲みdivこれはどのように見えるかです
#problem {margin-right:auto;margin-left:auto; /*what ever other styles*/}
#enclose {position:fixed;bottom:0px;width:100%;}
その後、HTMLで...
<div id="enclose">
<div id="problem">
<!--this is where the text/markup would go-->
</div>
</div>
いこうぜ!
-ハイパーテクシー
私が見る2つの潜在的な問題があります:
1-IEは過去にposition:fixedで問題が発生しました。有効なDoctypeまたはIE以外のブラウザでIE7 +を使用している場合、これは問題の一部ではありません
2-フッターオブジェクトを中央に配置する場合は、フッターの幅を指定する必要があります。それ以外の場合は、デフォルトでページの全幅に設定され、左右の自動マージンは0に設定されます。フッターバーが幅を占有して(StackOverflow通知バーなど)、テキストを中央に配置する場合は、 「text-align:center」を定義に追加します。
@Michaelからのコメントに基づく:
これを行うより良い方法があります。 position:relativeとフッターのサイズのパディング+必要なコンテンツとフッター間のスペースでボディを作成します。次に、absoluteとbottom:0でフッターdivを作成します。
私は説明のために掘りに行き、それはこれに要約します:
詳細は http://css-tricks.com/absolute-positioning-inside-relative-positioning/
これはcssグリッドを使用した例です。
html, body{
height: 100%;
width: 100%;
}
.container{
height: 100%;
display:grid;
/*we divide the page into 3 parts*/
grid-template-rows: 20px auto 30px;
text-align: center; /*this is to center the element*/
}
.container .footer{
grid-row: 3; /*the footer will occupy the last row*/
display: inline-block;
margin-top: -20px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<div class="container">
<div class="header">
</div>
<div class="content">
</div>
<div class="footer">
here is the footer
</div>
</div>
</body>
</html>
cSSグリッドを使用できます:具体例