如何实现Gallery的拖动式图片浏览效果?
- 行业动态
- 2025-04-28
- 4663
在网页中实现拖动式图片画廊效果,既能提升用户交互体验,也能通过动态展示吸引访客停留,以下为兼顾技术实现与搜索引擎优化的完整方案:
<h3>一、核心代码实现</h3>
<div class="code-block">
<pre><code><div class="gallery-container" id="imageGallery">
<img src="image1.webp" alt="产品展示图" loading="lazy">
<img src="image2.webp" alt="使用场景示意图" loading="lazy">
<img src="image3.webp" alt="细节特写照片" loading="lazy">
</div>
<style>
.gallery-container {
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
gap: 1rem;
padding: 1rem 0;
-webkit-overflow-scrolling: touch;
}
.gallery-container img {
scroll-snap-align: start;
min-width: 85%;
height: 400px;
object-fit: cover;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
</style>
<script>
const gallery = document.getElementById(‘imageGallery’);
let isDragging = false, startX, scrollLeft;
gallery.addEventListener(‘mousedown’, (e) => {
isDragging = true;
startX = e.pageX – gallery.offsetLeft;
scrollLeft = gallery.scrollLeft;
});
gallery.addEventListener(‘mouseup’, () => isDragging = false);
gallery.addEventListener(‘mousemove’, (e) => {
if (!isDragging) return;
e.preventDefault();
const x = e.pageX – gallery.offsetLeft;
gallery.scrollLeft = scrollLeft – (x – startX)*2;
});
// 添加触摸事件支持
gallery.addEventListener(‘touchstart’, (e) => {
startX = e.touches[0].pageX – gallery.offsetLeft;
scrollLeft = gallery.scrollLeft;
});
gallery.addEventListener(‘touchmove’, (e) => {
const x = e.touches[0].pageX – gallery.offsetLeft;
gallery.scrollLeft = scrollLeft – (x – startX)*2;
});
</script>