iPhone锚点,scrollTop,scrollTo显示移动按钮栏,但不会滚动或跳到锚点
iPhone anchor, scrollTop, scrollTo reveals mobile button bar, but does not scroll or jump up to anchor
我添加了一个固定在浏览器窗口底部的返回顶部按钮。点击后,它会滚动到桌面和安卓系统的顶部,但不会滚动到iPhone。在iPhone上,scrollTo事件显示地址栏和底部移动按钮栏,但不会将用户返回到页面顶部。
编辑:当触摸事件发生在屏幕底部20-30像素范围内时,iPhone上的地址栏和按钮栏就会出现。这就是为什么这个返回顶部按钮不起作用的原因。将其向上移动40px可阻止地址/按钮栏的显示
我试着把它放在原始位置:
$('#scroll-to-top-button').on('click', function() {
window.scrollTo(0,0);
});
还有一个定时器:
$('#scroll-to-top-button').on('click', function() {
window.setTimeout(function() {
window.scrollTo(0,0);
}, 500);
});
我尝试使用scrollTop,结果相同:浏览器按钮栏和地址栏出现,但没有滚动。
我还尝试启动scrollTo,同时用另一个scrollTo设置timeOut。超时永远不会触发。
我也尝试过滚动html或body,或者两者的组合:
$('#scroll-to-top-button').on('click', function() {
$('html,body').animate({
scrollTop: 0,
}, 200);
});
仅html
$('#scroll-to-top-button').on('click', function() {
$('body').animate({
scrollTop: 0,
}, 200);
});
单体
$('#scroll-to-top-button').on('click', function() {
$('html').animate({
scrollTop: 0,
}, 200);
});
我尝试将按钮重置为锚标记,并尝试将其链接到页面中。这不仅仅适用于基本的html锚点功能:
<div id="main-body"> ... lots of content forcing scrollbars to appear ... </div>
<a id="scroll-to-top-button" class="btn btn-default" href="#main-body">Back to Top</a>
并尝试阻止默认和动画链接到锚:
$('#scroll-to-top-button').on('click', function(e) {
e.preventDefault();
$('html,body').animate({
scrollTop: 0,
}, 200);
});
这是一个演示问题的链接。在这个链接中,代码使用了我最后一个例子中的一个来解决这个问题,它纯粹是一个试图链接到页面顶部的锚标记。
http://willanni.com/dev/iphone-scroll/
我想可能是缺少viewport标记导致了这种情况,所以我添加了以下内容:<meta name="viewport" content="width=device-width, initial-scale=1">
。然而当我把它加进去的时候,它仍然不能使它工作。
除了强制地址栏和按钮栏在iPhone中始终可见外,有没有办法在iPhone中滚动到窗口顶部?(注意:iPad没有这个问题,尽管它有一个不同的奇怪问题,需要超时才能修复。不过情况不同)
尝试在body和html:上使用jQuery动画
$("BODY,HTML").animate({
scrollTop: 0
}, 100);
// second parameter is time so adjust it if you please
答案是,如果不强制地址/按钮栏始终可见,就无法做到这一点。
iPhone捕捉屏幕底部约20-30像素范围内的任何触摸事件,并显示地址和底部按钮栏。在显示栏之前,不会触发或注册任何页面脚本、按钮或链接。position: fixed, bottom: 0;
按钮在第二次触摸之前无法激活:
- 第一次触摸显示底部按钮栏(和地址栏)
- 第二次触摸可激活任何按钮/脚本/锚点功能
当按钮栏被隐藏时,在窗口中添加事件监听器不会捕捉到屏幕该区域的触摸事件。例如,为了测试,我设置了一个超时,让自己有一点时间向下滚动并隐藏底部栏。在屏幕的所有区域,除了底部,这是有效的:
window.addEventListener('touchstart', function() {
setTimeout(function() {
alert('touchstart');
}, 500);
});
在底部区域,什么都没有。
因此,实际上,要想在第一次点击时在屏幕底部添加一个按钮,你需要在正文和html标签上应用一些技巧性的css,以强制地址和按钮栏始终显示:
html,body {
-webkit-overflow-scrolling: touch !important;
overflow: auto !important;
height: 100% !important;
}
- jquery scrollTO iPhone/iPad没有't向右滚动
- window.scrollTo()与Polymer Project核心滚动标题面板断开
- iPhone锚点,scrollTop,scrollTo显示移动按钮栏,但不会滚动或跳到锚点
- 如何使用类选择器使用 Jquery ScrollTo() 将页面滚动到元素
- Android驱动程序的scrollTo和scrollToExact 方法的问题.方法不会滚动到所需的元素文本,而是滚动
- jquery.scrollTo — 在页面加载时滚动
- 无法使用 window.scrollTo(0,content_scroll_pos);使窗口滚动到所需位置
- jQuery.ScrollTo -如何使bg滚动速度比其他慢
- jQuery scrollTo与滑动滚动条
- 禁用滚动条和鼠标滚轮,但不禁用scrollTo
- 当想要滚动到顶部时,scrollTo不工作
- 移动Safari:为什么是window ?scrollTo(0,0)不滚动到(0,0)
- 滚动与ScrollTo.js不起作用
- scrollTo不滚动到元素的开始
- 修改jQuery.ScrollTo插件将元素滚动到页面中心(垂直/水平)或尽可能靠近中心
- 如何使用scrollTo插件滚动到元素的新位置
- 滚动条不移动在jQuery slimScroll使用ScrollTo
- Jquery scrollTo插件:滚动到一个锚点
- 使用ScrollTo jQuery插件提交表单后滚动到错误和成功消息
- 我怎么能有一个剑道窗口与滚动条打开scrollTo(0,0)