iPad的Safari浏览器:禁用滚动,反弹效果?
我正在开发一个基于浏览器的应用程序,目前我正在开发和iPad的Safari浏览器的样式。
我正在寻找ipad上的两件事情:如何禁用不需要的页面的垂直滚动? &我怎样才能禁用弹性反弹效果?
对于在iOS Safari中运行的web / html应用程序,您需要类似的东西
document.ontouchmove = function(event){ event.preventDefault(); }
对于iOS 5,您可能需要考虑以下因素: document.ontouchmove和iOS 5上的滚动
2014年9月更新:更彻底的方法可以在这里find: https : //github.com/luster-io/prevent-overscroll 。 对于这个和大量有用的webappbuild议,请参阅http://www.luster.io/blog/9-29-14-mobile-web-checklist.html
2016年3月更新:最后一个链接不再有效 – 请参阅https://web.archive.org/web/20151103001838/http://www.luster.io/blog/9-29-14-mobile-web-checklist .html代替存档版本。 感谢@falsarella指出这一点。
您也可以将body / html的位置更改为固定的:
body, html { position: fixed; }
你可以使用这个jQuery代码片段来做到这一点:
$(document).bind( 'touchmove', function(e) { e.preventDefault(); } );
这将阻止垂直滚动,并在您的网页上发生任何反弹效果。
我知道这是略微不合格的,但我一直在使用Swiffy将Flash转换成交互式HTML5游戏,并遇到同样的滚动问题,但没有find解决scheme。
我遇到的问题是Swiffy舞台占据了整个屏幕,所以一旦它被载入,文档touchmove事件就不会被触发。
如果我试图将相同的事件添加到Swiffy容器中,则只要舞台已经加载就会被replace。
最后,我通过将touchmove事件应用于舞台上的每个DIV来解决它(相当混乱)。 由于这些分区也在不断变化,我需要继续检查它们。
这是我的解决scheme,似乎运作良好。 我希望对任何试图find与我相同的解决scheme的人都有帮助。
var divInterval = setInterval(updateDivs,50); function updateDivs(){ $("#swiffycontainer > div").bind( 'touchmove', function(e) { e.preventDefault(); } );}
overflow: scroll; -webkit-overflow-scrolling: touch;
在容器上你可以设置元素内的弹跳效果
资料来源: http : //www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/
试试这个JS sollutuion :
var xStart, yStart = 0; document.addEventListener('touchstart', function(e) { xStart = e.touches[0].screenX; yStart = e.touches[0].screenY; }); document.addEventListener('touchmove', function(e) { var xMovement = Math.abs(e.touches[0].screenX - xStart); var yMovement = Math.abs(e.touches[0].screenY - yStart); if((yMovement * 3) > xMovement) { e.preventDefault(); } });
防止默认的Safari滚动和反弹手势,而不会分离您的触摸事件侦听器。
对于那些正在使用MyScript Web App的人来说,他们正在为身体的滚动/拖拽(在iPad和平板电脑上)而不是实际写作:
<body touch-action="none" unresolved>
这为我修好了。
在iPhonetesting。 只需在目标元素容器上使用这个CSS,它就会改变滚动行为,当手指离开屏幕时会停止。
-webkit-overflow-scrolling: auto
https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling
没有解决scheme适合我。 这是我如何做到的。
html,body { position: fixed; overflow: hidden; } .the_element_that_you_want_to_have_scrolling{ -webkit-overflow-scrolling: touch; }
类似于生气的奇异果,我用高度而不是位置来工作:
html,body { height: 100%; overflow: hidden; } .the_element_that_you_want_to_have_scrolling{ -webkit-overflow-scrolling: touch; }