JavaScript 左右滑动选择日期通常指的是在网页上通过触摸或鼠标操作,使用户能够通过左右滑动来选择日期的功能。这种功能常见于移动设备上的日历应用或需要日期选择的网页表单中。
以下是一个简单的 JavaScript 示例,展示如何实现左右滑动选择日期的功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Swipe to Select Date</title>
<style>
#calendar {
width: 100%;
overflow-x: scroll;
white-space: nowrap;
display: flex;
align-items: center;
}
.date {
padding: 10px;
margin: 5px;
border: 1px solid #ccc;
cursor: pointer;
}
</style>
</head>
<body>
<div id="calendar">
<!-- Dates will be dynamically inserted here -->
</div>
<script>
const calendar = document.getElementById('calendar');
const today = new Date();
let currentDate = new Date(today);
function renderDates() {
calendar.innerHTML = '';
for (let i = -2; i <= 2; i++) {
const date = new Date(currentDate);
date.setDate(currentDate.getDate() + i);
const dateElement = document.createElement('div');
dateElement.className = 'date';
dateElement.textContent = date.toLocaleDateString();
dateElement.onclick = () => {
currentDate = date;
renderDates();
};
calendar.appendChild(dateElement);
}
}
let startX = 0;
let scrollLeft = 0;
calendar.addEventListener('mousedown', (e) => {
startX = e.pageX - calendar.offsetLeft;
scrollLeft = calendar.scrollLeft;
});
calendar.addEventListener('mouseleave', () => {
calendar.scrollTo(scrollLeft, 0);
});
calendar.addEventListener('mouseup', () => {
calendar.scrollTo(scrollLeft, 0);
});
calendar.addEventListener('mousemove', (e) => {
if (!startX) return;
e.preventDefault();
const x = e.pageX - calendar.offsetLeft;
const walk = (x - startX) * 3; // scroll-fast
calendar.scrollLeft = scrollLeft - walk;
});
renderDates();
</script>
</body>
</html>
问题1:滑动不流畅
requestAnimationFrame
来平滑动画效果。问题2:在不同设备上的兼容性问题
问题3:日期选择逻辑错误
通过上述方法,可以有效地实现和优化 JavaScript 左右滑动选择日期的功能。
领取专属 10元无门槛券
手把手带您无忧上云