jQuery scrollTo 插件在 iOS 上变成 Jerky
Posted
技术标签:
【中文标题】jQuery scrollTo 插件在 iOS 上变成 Jerky【英文标题】:JQuery scrollTo plugin becomes Jerky on iOS 【发布时间】:2012-06-27 22:41:37 【问题描述】:我在 one-page site 上使用 JQuery scrollTo plugin 在不同部分之间垂直滚动。
滚动在所有浏览器中都能正常工作除了 ios Safari 可以滚动但非常生涩。我在页面上使用了许多其他 Jquery 插件,因此它可能与其中之一发生冲突。
如果有人知道在 iPad 上流畅运行的 scrollTo 替代方案,或者可以建议从哪里开始解决问题,我将不胜感激。我试过this solution,但没有成功。
【问题讨论】:
你不需要插件。 jQuery 从 1.2.6 开始就有 .scrollTop api.jquery.com/scrollTop 你甚至可以使用 animate 方法进行动画处理。喜欢 .animate(scrollTop:0, 2000, 'ease') 相关:***.com/questions/8970740/… scrollTo 插件仍然有许多 vanilla core scrollTop 没有的高级功能。 【参考方案1】:试试这个
$.scrollTo(SELECTOR, 800,
'axis':'y'
);
【讨论】:
你救了我,伙计!谢谢!一个 2 年前的帖子,你一个月前发布的,我刚刚使用了这个修复......巧合?哈哈【参考方案2】:感谢阿纳的提示。
您的建议让我走上了正确的道路,在 this JSFiddle 的帮助下,我现在拥有了 smooth scroll i wanted to achieve,每个部分都具有平滑的动画滚动效果,并且活动菜单项会自动突出显示。
// Cache selectors
var lastId,
topMenu = $("#top-menu"),
topMenuHeight = topMenu.outerHeight()+15,
// All list items
menuItems = topMenu.find("a"),
// Anchors corresponding to menu items
scrollItems = menuItems.map(function()
var item = $($(this).attr("href"));
if (item.length) return item;
);
// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e)
var href = $(this).attr("href"),
offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
$('html, body').stop().animate(
scrollTop: offsetTop
, 300);
e.preventDefault();
);
// Bind to scroll
$(window).scroll(function()
// Get container scroll position
var fromTop = $(this).scrollTop()+topMenuHeight;
// Get id of current scroll item
var cur = scrollItems.map(function()
if ($(this).offset().top < fromTop)
return this;
);
// Get the id of the current element
cur = cur[cur.length-1];
var id = cur && cur.length ? cur[0].id : "";
if (lastId !== id)
lastId = id;
// Set/remove active class
menuItems
.parent().removeClass("active")
.end().filter("[href=#"+id+"]").parent().addClass("active");
);
【讨论】:
以上是关于jQuery scrollTo 插件在 iOS 上变成 Jerky的主要内容,如果未能解决你的问题,请参考以下文章
scrollTo JS 插件在 iPad 上不起作用 - 闪烁
如何使用 JQuery $.scrollTo() 函数滚动窗口
scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用
jQuery scrollTo 无法正常工作,html 设置为 100%