私のjsFiddleをチェックして、何が起こっているかを確認してください:http://jsfiddle.net/Amp3rsand/EDWHX/2/
記事の 2 番目の .content div のコメントを外すと、フッターが本来あるべきように非表示になり、ページの下部に到達すると非表示が解除されます。私の問題は、2 番目の .content div がコメント アウトされている場合のように、コンテンツがビューポートよりも短い場合にフッターを表示することです。
(つまり、window.height > document.height ですよね?)
私の実際のウェブサイトでは、.content div はページごとに一意の ID を持つ別の div に置き換えられているため、それらを具体的にターゲットにする方法がわかりませんでした。私がやっていることは正しい方法ですか?
何らかの理由で jsFiddle を使用したくない人のための私のコードは次のとおりです。
HTML
<article>
<div class="content"></div>
<!--
<div class="content"></div>
-->
</article>
<footer>
<ul id="footerlinks">
<li><a href="#">home</a></li>
<li><a href="#">contact</a></li>
</ul>
</footer>
<div id="underfooter"></div>
CSS
article {
min-height: 500px;
background: black;
padding: 10px;
margin-bottom: 50px;
}
.content {
height:500px;
background: lightgrey;
border: 1px dashed red;
}
footer {
position: fixed;
bottom: -50px;
height: 40px;
width: 100%;
margin: 0 auto;
text-align: center;
border-top:2px solid #6ce6d5;
background: white;
z-index: 100;
}
#underfooter {
position: fixed;
bottom: -44px;
background: blue;
width: 100%;
height: 40px;
z-index: 90;
}
JQuery
$(function(){
$('footer').data('size','hide');
});
$(window).scroll(function(){
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 0)
{
if($('footer').data('size') == 'hide')
{
$('footer').data('size','show');
$('footer').stop().animate({
bottom:'0px'
},400);
$('#white2').stop().animate({
bottom:'6px'
},400);
}
}
else
{
if($('footer').data('size') == 'show')
{
$('footer').data('size','hide');
$('footer').stop().animate({
bottom:'-50px'
},400);
$('#white2').stop().animate({
bottom:'-44px'
},400);
}
}
});
$(document).ready(function() {
if ($(window).height() >= $(document).height() )
{
$('footer').data('size','hide');
}
else
{
$('footer').data('size','big');
}
});
みんな、ありがとう