ZBLOG

现在图片是根据弹窗适应大小,如果图片太小,我想要放大缩小怎么实现最方便

为了实现一个可放大和缩小的图片查看功能,可以通过以下几种方式来实现。下面是一种常见的方法,使用鼠标滚轮进行缩放,同时允许用户拖动以移动图片。

我们将对原有的模态框代码进行一些修改,并添加适当的 CSS 和 JavaScript 代码:

HTML & JavaScript

for (let i = 0; i < dialogData.data.attachmentList.length; i++) {
    const fileUrl = dialogData.data.attachmentList[i].fileUrl;
    const link = $('<a class="link view">').attr('href', fileUrl).text(dialogData.data.attachmentList[i].fileName);

    link.on('click', function (e) {
        e.preventDefault();
        e.stopPropagation();

        let imageUrl = '../d/exemptionReduction/selectPictureById?id=' + dialogData.data.attachmentList[i].id;

        let modalHtml = `
            <div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        </div>
                        <div class="modal-body">
                            <div id="imageContainer" style="overflow: hidden; position: relative;">
                                <img id="imagePreview" src="${imageUrl}" alt="Image Preview" style="max-width: 100%; cursor: move;">
                            </div>
                        </div>
                    </div>
                </div>
            </div>`;

        $('body').append(modalHtml);
        $('#imageModal').modal('show');

        // Zoom functionality
        let scale = 1;
        
        const imgElement = $('#imagePreview');

        $('#imageContainer').on('wheel', function(e) {
            e.preventDefault();
            if (e.originalEvent.deltaY < 0) {
                scale *= 1.1; // Zoom in
            } else {
                scale /= 1.1; // Zoom out
            }
            imgElement.css('transform', `scale(${scale})`);
        });

        // Drag functionality
        let isDragging = false;
        let startX, startY;

        imgElement.on('mousedown', function(e) {
            isDragging = true;
            startX = e.pageX - imgElement.position().left;
            startY = e.pageY - imgElement.position().top;
            $(this).css('cursor', 'grabbing');
        });

        $(document).on('mouseup', function() {
            isDragging = false;
            imgElement.css('cursor', 'move');
        });

        $(document).on('mousemove', function(e) {
            if (isDragging) {
                let xPos = e.pageX - startX;
                let yPos = e.pageY - startY;
                imgElement.css({ top: yPos + 'px', left: xPos + 'px' });
            }
        });

        $('#imageModal').on('hidden.bs.modal', function () {
            $('#imageModal').remove();
        });
    });

    self.uploadImageBtn.after(link).hide();
}

CSS(可以添加到你的样式表中)

#imageContainer {
    width: 100%;
    height: auto;
    display: flex;
    justify-content: center;
}

#imagePreview {
    transition: transform 0.2s ease; /* 添加平滑过渡效果 */
}

实现说明:

  1. 缩放:通过监听 wheel 事件,动态调整图片的 scale 属性,实现缩放功能。
  2. 拖动:通过监听 mousedown, mouseup, 和 mousemove 事件,允许用户在按下鼠标时拖动图片。
  3. CSS:为图像容器设置样式以居中显示,并使其能够响应大小变化。

这样,你就可以在弹出的模态框中点击和拖拽以调整图像的位置,同时使用滚轮来控制图像的缩放。确保在你的项目中包含 jQuery 和 Bootstrap 的相关库,以支持上述代码正常运行。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18675

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?