元素如何仅在滚动时固定在页面顶部
How are elements fixed to the top of the page on scroll only?
http://www.devbridge.com/projects/autocomplete/jquery/
左侧的边栏最初打印在页面下方,但当您滚动时,它会向上移动到顶部,然后停留而不是消失在视口顶部之外。我见过很多。
当页面的滚动顶部大于要滚动的div 的顶部位置时,请为该div 提供一个固定位置,以便它跟随用户向下浏览页面。
例:
在这里,我对顶部位置进行了硬编码,因为它在我的用例中永远不会改变。
var $window = $(window), $menu = $("#menu");
$window.bind('scroll', function() {
var pos = +$window.scrollTop();
if (pos > 284) {
$menu.addClass("fixed");
}
else {
$menu.removeClass("fixed");
}
}).trigger("scroll");
其中 fixed 是将位置设置为 fixed 并将 top 设置为 0 的类。
你可能想看看粘性.js jQuery插件。如果你不需要它太花哨,它可以很好地处理这些事情。
其背后的原理是检查元素容器中的滚动。一旦达到一定的滚动级别,它就会得到修复。
使用 jQuery,您可以向文档添加一个滚动监听器:
$(document).scroll(function() {
});
在该函数中,您可以检查文档的 scrollHeight 是否大于元素的 y 位置:
if($(document).scrollTop() < $('.sidebar').offset().top) {
// here you change the css attributes position to fixed and top to 0
$('.sidebar').css('position', 'fixed').css('top', 0);
} else {
// change the position of the element to relative (default)
$('.sidebar').css('position', 'relative');
}
这几乎有效,但由于您始终检查固定元素的位置,因此 y 位置始终为 0。要让它工作,你只需要保存默认的y位置。这是我正在使用的代码:
var initial_y = $('.sidebar').offset().top;
$(document).scroll(function() {
$e = $('.sidebar');
if(initial_y - $(document).scrollTop() <= 0) {
$e.css('position', 'fixed').css('top', 0);
} else {
$e.css('position', 'relative');
}
});
相关文章:
- PHP中的setcookie仅适用于localhost
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- .Find()仅显示可见元素
- jQuery - 仅当元素顶部不可见时才滚动到元素的顶部
- 仅在 CSS 向上滚动(与顶部对齐)时修复了 CSS 中的布局位置
- 仅在顶部添加了 1 行代码
- 滚动事件仅在滚动顶部时触发
- 元素如何仅在滚动时固定在页面顶部
- “返回顶部”按钮仅在窗口滚动时可见(但移动设备不起作用)
- 栏固定在顶部,但仅当滚动试图隐藏它时
- JavaScript 清除文本框 DOM 仅清除顶部框
- 如果 Div 放置在 img 标记的顶部,则不会在 Div 上触发鼠标关闭事件 - 问题仅在 IE 中
- 静态顶部导航栏仅在滚动后显示
- Bootstrap 3 Modal内置texarea.当点击/聚焦文本区域时,背景滚动到顶部.仅适用于iOS 8
- 仅当导航栏位于页面顶部时使其透明,然后在滚动时使其背景为纯背景
- 如果图像高度超过图像宽度,通过裁剪其顶部和底部来垂直居中图像-仅使用CSS即可
- 禁用鼠标滚轮仅在页面滚动到顶部时有效
- 如何仅按顶部标题行对表进行排序
- 仅当其顶部到达窗口顶部时才修复标题