记录技术成长,奔向未来!

如何实现相册系统图片点击放大或缩小效果

摘要: 相册详情页的图片如果也像文章图片一样,点击后弹出可缩放、拖拽的模态框的话,可以利用模态框。由于文章图片监听的是 .article-content img,而相册轮播中的图片位于 .swiper-slide img,只需将选择器扩展即可。

修改方法

打开 assets/js/main.js,找到图片点击绑定函数(通常在文件末尾的 bindImageClick 函数),修改选择器为同时匹配文章图片和相册图片。

原代码:

javascript
复制
下载
function bindImageClick() {
    document.querySelectorAll('.article-content img').forEach(img => {
        // ...
    });
}

修改为:

javascript
复制
下载
function bindImageClick() {
    // 同时绑定文章图片和相册轮播图片
    document.querySelectorAll('.article-content img, .swiper-slide img').forEach(img => {
        if (img.hasAttribute('data-zoom-bound')) return;
        img.style.cursor = 'pointer';
        img.addEventListener('click', (e) => {
            e.stopPropagation();
            openModal(img.src);
        });
        img.setAttribute('data-zoom-bound', 'true');
    });
}

完整替换示例

如果使用的是之前提供的完整模态框代码,只需将上述 bindImageClick 函数替换原函数即可。其他部分(openModalcloseModal、滚轮缩放等)保持不变。

注意事项

  • 确保 main.js 中已包含完整的模态框实现(您已经提供)。

  • 如果相册图片在动态加载(如 Swiper 初始化后),MutationObserver 会监听 .gallery-container 或父容器。但当前观察的是 .article-content,不会自动观察相册图片。为了确保相册图片也能被绑定,可以扩大观察范围,或者直接在 bindImageClick 中执行(因为页面加载后 Swiper 已经渲染完毕)。

  • 简单起见,也可以直接使用上述修改,无需额外监听,因为 DOMContentLoaded 时 Swiper 已经初始化,图片存在。

测试

  1. 保存修改后的 main.js

  2. 清除浏览器缓存,进入相册详情页。

  3. 点击轮播中的任意图片,应弹出模态框,支持缩放、拖拽、关闭。

现在相册图片和文章图片的点击放大体验就统一了

发表评论 (0)

留下你的足迹

验证码 点击图片刷新