jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。触屏滚动是指在触摸屏设备上通过手势滑动来滚动页面或元素。
以下是一个使用 jQuery 实现触屏滚动的简单示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery Touch Scroll</title>
<style>
#scrollable {
width: 100%;
height: 300px;
overflow: auto;
border: 1px solid #ccc;
}
#content {
width: 100%;
height: 1000px;
background: linear-gradient(to bottom, #f0f0f0, #ccc);
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="scrollable">
<div id="content"></div>
</div>
<script>
$(document).ready(function() {
$('#scrollable').on('touchstart', function(event) {
var startX = event.originalEvent.touches[0].pageX;
var startY = event.originalEvent.touches[0].pageY;
$(this).on('touchmove', function(event) {
event.preventDefault();
var moveX = event.originalEvent.touches[0].pageX;
var moveY = event.originalEvent.touches[0].pageY;
var deltaX = moveX - startX;
var deltaY = moveY - startY;
$(this).scrollTop($(this).scrollTop() - deltaY);
});
$(this).on('touchend', function() {
$(this).off('touchmove');
});
});
});
</script>
</body>
</html>
原因:
解决方法:
position: fixed
或 position: absolute
等可能影响滚动的 CSS 属性。function throttle(func, wait) {
let timeout = null;
return function() {
const context = this;
const args = arguments;
if (!timeout) {
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args);
}, wait);
}
};
}
$('#scrollable').on('touchstart', function(event) {
// ... 同上
$(this).on('touchmove', throttle(function(event) {
// ... 同上
}, 100));
});
通过以上方法,可以有效解决触屏滚动不流畅的问题,提升用户体验。
领取专属 10元无门槛券
手把手带您无忧上云