如何使滑块在触摸屏上可滚动?
如何使滑块在触摸屏上可滚动?
这是我的网站:
主页上有一个幻灯片,我自己制作的。它会在8秒后自动切换幻灯片,也可以通过前进或后退按钮手动切换。但问题是,我希望在触摸屏上滑动时也能自动滚动。
非常感谢任何帮助。由于其他API(如JQuery)会导致网站速度变慢,所以我只能使用CSS、JavaScript、HTML和PHP。
如何使滑块在触摸屏上可以滚动?
问题的出现原因:
- 希望在触摸屏上能够实现滑块的滚动效果。
- 希望使用轻量级的脚本实现此功能。
解决方法:
- 使用以下脚本实现滑块的滚动效果:
var featured = document.getElementById("featured"); if( "ontouchstart" in window ) { var touchStart = function(evt) { var startTime = (new Date()).getTime(); var startX = evt.changedTouches[0].pageX; var touchEnd = function(evt) { document.removeEventListener("touchend", touchEnd); var diffX = evt.changedTouches[0].pageX - startX; var elapsed = (new Date()).getTime() - startTime; console.log( "Swiped " + diffX + " pixels in " + elapsed + " milliseconds" ); if( elapsed < 200 && Math.abs(diffX) > 50 ) { ( diffX < 0 ) ? slideright() : slideleft(); } } document.addEventListener("touchend", touchEnd); }; featured.addEventListener("touchstart", touchStart); }
- 可以根据需要调整最小滑动时间(200毫秒)和最小滑动距离(50像素)。
- 如果需要更高级的手势识别功能,可以使用某种框架。
其他建议:
- 最好在"slideLeft"和"slideRight"函数中直接重置setInterval,这样可以避免在左右滑动后立即启动滚动。
希望对你有帮助!
如何在触摸屏上使滑块可滚动?
由于不想使用jQuery插件,由于各种触摸平台之间的差异,这将是一个相当复杂的问题,最终你可能会在尝试获取所需的抽象时陷入重复造轮子的境地。最重要的是,你的努力显然会取决于你想要实现的精度水平,所以建议你不要试图使图像对每次最小的触摸事件做出响应。
我认为你最好使用Tocca.js,这是一个非常有前景的独立脚本,旨在在现有设备中规范化触摸事件,非常轻量级(仅1kB)。
Hammer.js更准确,但在你的情况下可能会有点重。
QuoJS也不错,但它不仅仅专注于触摸事件。
你可能会发现这个Stack Overflow的问题和这个问题有趣。最后,你可以从现有的几个支持触摸的javascript图像滑块中获得灵感。