jQuery航点,在视口中心而不是顶部激活
jquery waypoints, activate when in center of viewport instead of top?
所有文档都谈到航点何时到达视口顶部,但我希望当航点的任何部分位于视口中心时触发。
如果我向下滚动,这段代码效果很好,但是当我向上滚动时,它不起作用,不知所措。
$('.section').waypoint(function(direction) {
highlight('#' + this.id);
}, {
context: '#scroll',
offset: function (direction) {
return $(this).height();
}
});
我尝试了下面的代码和几个变体,它甚至从未命中任何一个 return 语句。
$('.section').waypoint(function(direction) {
highlight('#' + this.id);
}, {
context: '#scroll',
offset: function (direction) {
if (direction == 'down') {
return -$(this).height();
} else {
return 0;
}
}
});
所以现在我正在尝试这个,基于航点示例,但 $active.id 不像 this.id 那样工作,所以我的函数"突出显示"失败。
$('.section').waypoint(function (direction) {
var $active = $(this);
if (direction == 'down') {
$active = $active.prev();
}
if (!$active.length) {
$active = $(this);
}
highlight($active.id);
}, {
context: '#scroll',
offset: function (direction) {
return $(this).height();
}
});
offset
选项不采用方向参数。我很想知道您是否从文档中的某个地方得到它,因为如果在offset
函数中使用direction
的部分,那就是一个错误。
您可以使用 % 偏移量告诉当元素顶部碰到视口中间时要触发的航点:
offset: '50%'
如果在向上滚动和向下滚动时需要具有不同的偏移量,最好通过创建两个不同的航点来实现:
var $things = $('.thing');
$things.waypoint(function(direction) {
if (direction === 'down') {
// do stuff
}
}, { offset: '50%' });
$things.waypoint(function(direction) {
if (direction === 'up') {
// do stuff
}
}, {
offset: function() {
// This is the calculation that would give you
// "bottom of element hits middle of window"
return $.waypoints('viewportHeight') / 2 - $(this).outerHeight();
}
});
相关文章:
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- 激活chrome上的chrome.notifications对象
- 提示使用服务器端事件处理程序激活JavaScript
- jQuery粘性插件可变顶部间距
- 如何从外部页面激活非默认引导选项卡
- 使用jQuery更改元素的顶部位置
- 选项卡侦听器未被来自后台脚本的消息激活
- 基于localStorage的Meteor激活模板
- 背景图像顶部的滚动图像不移动
- 滚动然后捕捉到顶部而不是取消捕捉
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何通过按键激活按钮应用CSS效果
- 如何在离子框架+有角度的框架中制作顶部标签
- 计算“;“左”;以及“;顶部“;来自固定位置浮动元素的值
- 如何在引导程序元素的顶部添加掩码
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 滚动到Rails 4应用程序中的顶部jQuery
- 将列表元素动画制作到顶部
- 当目标处于顶部滚动状态时,如何从菜单中激活项目
- jQuery航点,在视口中心而不是顶部激活