要实现JavaScript中的图片鼠标左右滑动效果,你需要了解以下基础概念:
mousedown
、mousemove
、mouseup
),可以实现用户交互。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Slider</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="slider-container">
<img src="image1.jpg" alt="Image 1" class="slider-image">
<img src="image2.jpg" alt="Image 2" class="slider-image">
<img src="image3.jpg" alt="Image 3" class="slider-image">
</div>
<script src="script.js"></script>
</body>
</html>
.slider-container {
width: 100%;
overflow: hidden;
position: relative;
}
.slider-image {
width: 100%;
display: block;
transition: transform 0.3s ease-in-out;
}
document.addEventListener('DOMContentLoaded', function() {
const container = document.querySelector('.slider-container');
const images = document.querySelectorAll('.slider-image');
let startX = 0;
let currentTranslate = 0;
let prevTranslate = 0;
let animationID = 0;
let currentIndex = 0;
container.addEventListener('mousedown', dragStart);
container.addEventListener('mouseup', dragEnd);
container.addEventListener('mouseleave', dragEnd);
container.addEventListener('mousemove', drag);
function dragStart(event) {
startX = event.clientX;
animationID = requestAnimationFrame(animation);
}
function dragEnd() {
cancelAnimationFrame(animationID);
const movedBy = currentTranslate - prevTranslate;
if (movedBy < -100 && currentIndex < images.length - 1) currentIndex += 1;
if (movedBy > 100 && currentIndex > 0) currentIndex -= 1;
setSliderPosition();
}
function drag(event) {
const currentPosition = event.clientX;
currentTranslate = prevTranslate + currentPosition - startX;
}
function animation() {
setSliderPosition();
if (isDragging) requestAnimationFrame(animation);
}
function setSliderPosition() {
const offset = -currentIndex * 100 + '%';
container.style.transform = `translateX(${currentTranslate}px)`;
}
});
transition
属性设置不当或JavaScript执行效率低。优化CSS过渡效果和使用requestAnimationFrame
可以提高流畅度。通过以上步骤和代码示例,你可以实现一个基本的图片鼠标左右滑动效果。根据具体需求,你可以进一步扩展和优化功能。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云