这是一个证明问题的jsbin示例.
基本上,我有以下javascript将窗口滚动到页面上的锚点:
// get anchors with href's that start with "#"
$("a[href^=#]").live("click", function(){
var target = $($(this).attr("href"));
// if the target exists: scroll to it...
if(target[0]){
// If the page isn't long enough to scroll to the target's position
// we want to scroll as much as we can. This part prevents a sudden
// stop when window.scrollTop reaches its maximum.
var y = Math.min(target.offset().top, $(document).height() - $(window).height());
// also, don't …Run Code Online (Sandbox Code Playgroud) 我在Stackoverflow上搜索过,但似乎无法找到这个问题的满意答案.基本上我想知道滚动是通过鼠标滚轮还是浏览器滚动条完成的.
我有一个单页网站example.com。有两个部分:页面顶部的介绍和页面底部的联系人。如果我想让某人访问联系部分而不必滚动介绍,我给他们这个链接:example.com/#contact。我在下面谈论这些访问。
浏览器会自动向下滚动到接触部分,但它忽略页面顶部的固定导航,所以接触部分的导航背后滚动,因此顶部接触部分变得不可见。这就是我想使用 JavaScript 通过从滚动位置减去固定导航的高度来纠正的。我们将此函数称为scrollCorrector. 问题是我不确切知道这种自动滚动何时发生,所以scrollCorrector每次都应该调用它。
什么时候应该scrollCorrector调用?由于散列部分而发生自动滚动时。为什么不使用onscroll?因为这样我无法区分自动滚动和用户滚动。为什么不在 eachonclick上使用<a href="example.com/#contact">?我会使用它,但是如果用户通过浏览器的后退按钮导航怎么办?好的,我也会用onpopstate。但是,如果用户来自example.com/#intro通过手动将 URL 重写为example.com/#contact怎么办?好的,我也会用onhashchange。但是如果用户已经在example.com/#contact 上,点击地址栏,然后按回车键而不做任何修改怎么办?以上都没有帮助。
那我应该听什么事件?如果这样的事件不存在,怎么scrollCorrector知道自动滚动刚刚发生?
任何人都可以建议一个简单的jQuery垂直自动滚动脚本吗?一个不臃肿,我只需要它自动启动并li在div中滚动6或更多.我尝试了jquery.autoscroll.js但无法让它自动启动.
$.fn.autoscroll.defaults = {
start: {
step: 50,
scroll: true,
direction: "down",
pauseOnHover: true
},
delay: 5000,
ffrw: {
speed: "fast",
step: 100
}
};
Run Code Online (Sandbox Code Playgroud) javascript ×3
jquery ×3
anchor ×1
autoscroll ×1
dom-events ×1
hashchange ×1
mousewheel ×1
scroll ×1
scrollbar ×1