ZBLOG

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

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

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

HTML & JavaScript

  1. for (let i = 0; i < dialogData.data.attachmentList.length; i++) {
  2. const fileUrl = dialogData.data.attachmentList[i].fileUrl;
  3. const link = $('<a class="link view">').attr('href', fileUrl).text(dialogData.data.attachmentList[i].fileName);
  4. link.on('click', function (e) {
  5. e.preventDefault();
  6. e.stopPropagation();
  7. let imageUrl = '../d/exemptionReduction/selectPictureById?id=' + dialogData.data.attachmentList[i].id;
  8. let modalHtml = `
  9. <div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true">
  10. <div class="modal-dialog" role="document">
  11. <div class="modal-content">
  12. <div class="modal-header">
  13. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  14. </div>
  15. <div class="modal-body">
  16. <div id="imageContainer" style="overflow: hidden; position: relative;">
  17. <img id="imagePreview" src="${imageUrl}" alt="Image Preview" style="max-width: 100%; cursor: move;">
  18. </div>
  19. </div>
  20. </div>
  21. </div>
  22. </div>`;
  23. $('body').append(modalHtml);
  24. $('#imageModal').modal('show');
  25. // Zoom functionality
  26. let scale = 1;
  27. const imgElement = $('#imagePreview');
  28. $('#imageContainer').on('wheel', function(e) {
  29. e.preventDefault();
  30. if (e.originalEvent.deltaY < 0) {
  31. scale *= 1.1; // Zoom in
  32. } else {
  33. scale /= 1.1; // Zoom out
  34. }
  35. imgElement.css('transform', `scale(${scale})`);
  36. });
  37. // Drag functionality
  38. let isDragging = false;
  39. let startX, startY;
  40. imgElement.on('mousedown', function(e) {
  41. isDragging = true;
  42. startX = e.pageX - imgElement.position().left;
  43. startY = e.pageY - imgElement.position().top;
  44. $(this).css('cursor', 'grabbing');
  45. });
  46. $(document).on('mouseup', function() {
  47. isDragging = false;
  48. imgElement.css('cursor', 'move');
  49. });
  50. $(document).on('mousemove', function(e) {
  51. if (isDragging) {
  52. let xPos = e.pageX - startX;
  53. let yPos = e.pageY - startY;
  54. imgElement.css({ top: yPos + 'px', left: xPos + 'px' });
  55. }
  56. });
  57. $('#imageModal').on('hidden.bs.modal', function () {
  58. $('#imageModal').remove();
  59. });
  60. });
  61. self.uploadImageBtn.after(link).hide();
  62. }

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

  1. #imageContainer {
  2. width: 100%;
  3. height: auto;
  4. display: flex;
  5. justify-content: center;
  6. }
  7. #imagePreview {
  8. transition: transform 0.2s ease; /* 添加平滑过渡效果 */
  9. }

实现说明:

  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

注册

已经有帐号?