在屏幕顶部附近滚动元素时触发的侦听器
Listener that fires when element is scrolled near the top of the screen?
我想让一个元素始终可见,即使它应该被用户滚动出来。
1) On Body Load 2) After scrolling down
------------------------- -------------------------
____________
| |
| |
| |
| |
|____________|
____________
| |
| |
| |
| |
|____________|
基本上,当元素距离顶部小于 20px 时,我想将元素的位置更改为固定 (2),当它距离顶部 (1) 超过 20px 时,将其位置更改回静态。
有些插件可以做到这一点,例如:http://www.vertstudios.com/blog/demo/stickyscroller/demo.php 但是如果手动操作不是太难,我更喜欢避免它们。
如何创建一个侦听器,当元素靠近顶部时触发,并在元素远离顶部时触发
需要一个
css类和规则来修复该类。如果未应用类,则正常的css将设置绝对值
var $div = $('#mydiv');
$(window).on('scroll', function() {
var changeClass = false,
is_fixed = $div.hasClass('fixedClass');
if ($(this).scrollTop() > 20) {
changeClass = is_fixed ? false : true;
} else {
changeClass = is_fixed ? true : false;
}
if (changeClass) {
$div.toggleClass('fixedClass');
}
})
可以用更短的代码编写这个,但由于滚动每秒多次触发事件,检查类是否已经存在会减少很多额外的操作 DOM
相关文章:
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- SVG元素在转换后会丢失事件侦听器
- 如何将事件侦听器添加到跨域iframe中的元素中
- JS:隐藏元素上的事件侦听器
- 如何从函数引用元素(从事件侦听器调用)
- 将多个事件侦听器添加到一个元素
- 动态创建的元素上的事件侦听器仅对第一个结果起作用
- Javascript元素更新侦听器
- 如果 JS 未连接到 DOM 时,是否会使用事件侦听器删除双重创建的元素
- 使用函数制作的 HTML 元素具有相同的事件侦听器
- 为多个元素组合 jQuery 事件侦听器
- 在屏幕顶部附近滚动元素时触发的侦听器
- 没有 x 可编辑表元素的事件侦听器
- 动态添加元素的 Addinf 事件侦听器 - HTML/JS
- 刷新父窗口中的 jquery .click 侦听器以处理新元素
- 如何从 JavaScript 中的多个元素中删除事件侦听器
- AngularJS:使用 jQuery 将事件侦听器绑定到 ng-repeat 生成的元素
- 使用 javascript 添加 onclick 事件侦听器和元素
- 向< light >添加事件侦听器元素