[英]show a fixed bottom footer on scroll up
I want to show a footer fixed to the bottom of the screen only when the user scrolls up. 我只想在用户向上滚动时显示固定在屏幕底部的页脚。 Similar to Medium Posts
类似于中等职位
I have the effect working on my header but I can't get it to work for my footer 我的页眉效果正常,但页脚无法正常工作
var didScroll; var lastScrollTop = 0; var delta = 5; var footerHeight = $('blog-footer').outerHeight(); $(window).scroll(function(event) { didScroll = true; }); setInterval(function() { if (didScroll) { hasScrolled(); didScroll = false; } }, 250); function hasScrolled() { var st = $(this).scrollTop(); if (Math.abs(lastScrollTop - st) <= delta) { return; } if (st > lastScrollTop && st > footerHeight) { $('blog-footer').removeClass('footer-down').addClass('footer-up'); } else { if (st + $(window).height() < $(document).height()) { $('blog-footer').removeClass('footer-up').addClass('footer-down'); } } lastScrollTop = st; }
.blog-footer { position: fixed; width: 100%; background: red; bottom: 0; height: 100px; }
<div class="blog-footer footer-down"> <p>Content</p> </div>
Can anyone see what I'm missing to get this to work? 谁能看到我缺少的东西才能正常工作?
You have a small (read serious ) error. 您有一个小错误( 严重 )。 May be a typo!
可能是错字! That's
$(".blog-footer")
with a .
那是
$(".blog-footer")
和一个.
. 。
Added a snippet for the same, in a simpler way. 以更简单的方式添加了相同的代码段。 See the JavaScript and CSS part please.
请参阅JavaScript和CSS部分。
$(function () { last_scroll_position = $(window).scrollTop(); $(window).scroll(function () { if (last_scroll_position > $(window).scrollTop()) $("footer").addClass("show"); else $("footer").removeClass("show"); last_scroll_position = $(window).scrollTop(); }); });
* {font-family: 'Segoe UI'; margin: 0; padding: 0; list-style: none;} p {margin: 0 0 5px; text-align: justify;} footer {height: 50px; line-height: 50px; width: 100%; text-align: center; background-color: #f99; position: fixed; bottom: -50px; -webkit-transition: all 0.5s linear; -o-transition: all 0.5s linear; transition: all 0.5s linear;} footer.show {bottom: 0;}
<script src="https://code.jquery.com/jquery-1.9.1.js"></script> <p>Can we do something easier and similar instead of all those math?</p> <p>Some long content now.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto distinctio, itaque dolores sunt quo facilis doloremque quidem minima. Nesciunt adipisci ex consectetur! Magnam, illo qui voluptas placeat quos expedita nulla!</p> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus in illo corrupti quos hic ipsam eaque eligendi assumenda itaque numquam ullam, praesentium cumque perferendis officia, veniam totam! Quasi ab, necessitatibus.</p> <footer>Footer Here</footer>
Made another version of this: https://jsfiddle.net/h23oe67L/1/ 做了另一个版本: https : //jsfiddle.net/h23oe67L/1/
Not that much jQuery (I think we could actually remove it all together): 没有那么多jQuery(我认为我们实际上可以将其全部删除):
var distanceToTop = 0;
var $window = $(window);
var header = $('.header');
var footer = $('.footer');
$window.scroll(function () {
if ($window.scrollTop() < distanceToTop) {
// we have scrolled up
header.removeClass('header-up');
header.addClass('header-down');
footer.removeClass('footer-down');
footer.addClass('footer-up');
} else {
// we scrolled down (or to the sides, make a separate case for this)
header.removeClass('header-down');
header.addClass('header-up');
footer.removeClass('footer-up');
footer.addClass('footer-down');
}
distanceToTop = $window.scrollTop();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.