当前位置:首页 > 行业动态 > 正文

如何实现Gallery的拖动式图片浏览效果?

通过横向滑动布局与触摸事件监听实现图片拖动浏览,支持惯性滚动和边界回弹效果,结合动态加载及缩放手势优化交互体验,适用于相册展示等场景,确保流畅切换与视觉流畅性。

在网页中实现拖动式图片画廊效果,既能提升用户交互体验,也能通过动态展示吸引访客停留,以下为兼顾技术实现与搜索引擎优化的完整方案:

<h3>一、核心代码实现</h3>
<div class="code-block">
    <pre><code>&lt;div class="gallery-container" id="imageGallery"&gt;
&lt;img src="image1.webp" alt="产品展示图" loading="lazy"&gt;
&lt;img src="image2.webp" alt="使用场景示意图" loading="lazy"&gt;
&lt;img src="image3.webp" alt="细节特写照片" loading="lazy"&gt;

</div>

如何实现Gallery的拖动式图片浏览效果?  第1张

<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>

0