前言

  • 若依(ruoyi): v4.3
  • 360极速浏览器 12.0.1550.0 (正式版本) (32 位)
  • 操作系统 Windows 10 OS Version 2004 (Build 19041.572)
  • JavaScript V8 7.8.279.23
  • jQuery v2.1.4

表格图片预览功能

若依(ruoyi)自带了一个表格图片预览功能。该功能可以在示例演示>表格>表格图片预览功能中找到。

表格图片预览功能图片超宽问题

表格图片预览功能遇到超宽图片(比如屏幕宽度1024px,图片宽度为1800px)时,图片会将弹出层撑宽至与图片同宽(只有设定图片宽度是auto时,才会出现此问题)。这时,将无法看到关闭按钮,也就无法关闭图片预览功能。

表格图片预览功能图片超宽时,改为指定图片宽度

表格图片预览功能图片超宽时,将图片宽度指定一个小于当前窗口的宽度值,这样就可以看到关闭按钮,或者看到部分留白(点击留白部分也可以关闭图片预览)。

找到ry-ui.js,在其中找到下面部分的代码:

// 图片预览事件
$(optionsIds).off("click").on("click", '.img-circle', function() {var src = $(this).attr('src');var target = $(this).data('target');if($.common.equals("self", target)) {var height = $(this).data('height');var width = $(this).data('width');// 如果是移动端,就使用自适应大小弹窗if ($.common.isMobile()) {width = 'auto';height = 'auto';}layer.open({id: "div_img",title: false,type: 1,closeBtn: true,shadeClose: true,area: ['auto', 'auto'],content: "<img src='" + src + "' height='" + height + "' width='" + width + "'/>",});} else if ($.common.equals("blank", target)) {window.open(src);}
});

在上面的代码中添加success回调函数,添加后代码如下:

// 图片预览事件
$(optionsIds).off("click").on("click", '.img-circle', function() {var src = $(this).attr('src');var target = $(this).data('target')||"self";if($.common.equals("self", target)) {var height = $(this).data('height')||"auto";var width = $(this).data('width')||"auto";// 如果是移动端,就使用自适应大小弹窗if ($.common.isMobile()) {width = 'auto';height = 'auto';}layer.open({id: "div_img", /* 给个固定的ID,方便后面查找元素 */title: false,type: 1,closeBtn: true, /* 关闭按钮 */shadeClose: true, /* 点击阴影区域关闭弹窗 */area: ['auto', 'auto'],content: "<img src='" + src + "' height='" + height + "' width='" + width + "'/>",success: function(layero, index){// 图片加载完成后,再次处理图片宽度$('#div_img > img', layero).load(function(){// 获取图片宽和高let imgElement = $('#div_img > img', layero);let imgWidth = imgElement.width();let imgHeight = imgElement.height();// 获取 mainContent 宽和高。若依中,多数情况下页面嵌套页面。             let mainContent = $('#content-main', window.parent.document);if (mainContent.length<=0) {/* 修正mainContent:如果在新窗口中打开链接时,没有父级窗口 */mainContent = $(window);}let mainContentWidth = mainContent.width();let mainContentHeight = mainContent.height();/* 计算图片的宽度 */let newImgWidth = imgWidth;/* 图片超宽时,将图片的宽度设置为当前窗口的95%。图片高度auto */if (imgWidth > mainContentWidth*0.95) {newImgWidth = mainContentWidth*0.95;}/* 图片超高时,计算一个让图片不超高的宽度。图片高度auto */if (imgHeight > mainContentHeight*0.95) {let tmpNewImgWidth = imgWidth*(mainContentHeight*0.95/imgHeight);if (newImgWidth > tmpNewImgWidth) {newImgWidth = tmpNewImgWidth;}}// 重设图片的宽和高// 图片容器的高度设置为auto,不设置时,该容器的高度为固定值$("#div_img", layero).height('auto');// 指定图片的宽度$("#div_img > img", layero).attr({width: newImgWidth });// 很重要。触发窗口的 resize 事件,让 layer 调整位置。$(window).resize();});}});} else if ($.common.equals("blank", target)) {window.open(src);}
});

参考

https://www.w3school.com.cn/jquery/event_resize.asp
https://www.cnblogs.com/ymy124/p/4538695.html
https://www.w3school.com.cn/jquery/attributes_attr.asp
https://www.w3school.com.cn/jquery/css_height.asp
https://www.w3school.com.cn/jquery/css_width.asp

【若依(ruoyi)】表格图片预览功能图片超宽、超高问题相关推荐

  1. vue+vant使用图片预览功能ImagePreview的问题

    如果您搜到这篇文章的话,那员外估计您遇到跟我一样的问题了,即在打开图片预览功能后,如果不关闭预览的图片,同时改变路由的话,会发现即使路由改变了,预览的图片还在文档的最顶层显示,如图: 着实让员外百思不 ...

  2. 原生js实现ajax的文件异步提交功能、图片预览功能.实例

    采用html5使得选择图片改变时,预览框中图片随之改变.input文件选择框美化.原生js完成文件异步提交 效果图: 代码如下,可直接复制并保存为html文件打开查看效果 <html> & ...

  3. html预览图片的功能,javascript实现的图片预览功能

    本文实例讲述了javascript实现的图片预览功能.分享给大家供大家参考,具体如下: 1.将下面的代码复制到 内 /* Thumbnail image viewer- ?Dynamic Drive ...

  4. 微信小程序实现图片预览功能

    小程序有提供预览图片的wx.previewImage方法 先在页面上放上图片标签 <imagecatch:tap="preview"data-src = 'https://s ...

  5. vue图片缩略图及图片预览功能

    前言 上次有个需求,是要给图片做个缩略图以及预览功能.其实用vue来实现是很简单的, 几句代码可以搞定,也不需要什么额外的插件. 效果如下: vue显示图片缩略图 vue显示图片预览功能 核心代码 两 ...

  6. django admin后台列表页、修改/详情页图片预览功能

    目录 一.admin后台列表页的图片预览功能 二.admin后台修改/详情页图片预览功能 1,添加html前端代码 2.在admin.py文件中添加以下代码: 1.列表页图片问题:在admin列表页中 ...

  7. 最简单的图片预览功能【兼容IE8】

    最简单的图片预览功能[兼容IE8]  将如下代码放入<head></head>中: <html><head> <script type=&quo ...

  8. 带图片预览功能的图片上传

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. 图片预览与图片通过预留接口上传

    提示:图片预览与图片通过预留接口上传的笔记 图片前端预览: 前提:通过input[type=file]让用户选择文件,通过事件对象.target.files拿到用户选择的"文件对象" ...

最新文章

  1. 科学处理java.lang.StackOverflowError: null异常
  2. openpyxl读取excel_初识openpyxl--读取excel数据(二)
  3. asp.net的JSON数据进行序列化和反序列化
  4. lighttpd php7 源码安装,如何在CentOS 7上安装Lighttpd与PHP-FPM和MariaDB
  5. linux中sqlplus不能用_装修中不能用海沙,但是海沙已经偷偷走进了你的家
  6. 在项目开始前,为客户做专门的“需求变更流程”培训是必要的
  7. 【Git】切换分支,以及git stash的使用
  8. iOS开发之通知中心(NSNotificationCenter)
  9. 分布式session的6种解决方案
  10. Java 并发编程概念深入理解
  11. 什么时候不选择mysql_MySQL请选择合适的列_MySQL
  12. 【Flutter】Dart数据类型之String
  13. 白鹭H5小游戏项目结构
  14. python植物大战僵尸代码例_python实现植物大战僵尸游戏实例代码
  15. 成都Uber优步司机奖励政策(2月21日)
  16. JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用
  17. Unity直线轨迹导弹预判
  18. ccf试题1:分蛋糕
  19. 文通电脑版车牌识别软件,让违章驾车无处可躲
  20. 保险巨头安盛将推出代币众筹保险服务

热门文章

  1. Kettle7 java 远程执行Trans/Job
  2. 复习笔记——操作系统
  3. Zabbix介绍及安装部署
  4. C++ 字符数组函数与string函数
  5. 这些道理不懂,你注定就是穷打工的命!(转载)
  6. Silverlight 1.0 RC SDK 预览
  7. 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass...
  8. C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
  9. IBatisNet基础组件
  10. 解决memcached不能远程访问的问题