uniapp h5中,v-html,img图片中style=width:auto;会显示图片原来的尺寸,会超出屏幕,替换成width:100%,这样就不会超出屏幕

重要的地方,例如<img src="https://cdn2.xxkucun.com/xxkucun/tuwen/20200904/1d959815-6a1c-4eb2-93b7-25ff3d6559eb?x-oss-process=style/xptw" data-ratio="1" alt="fca7c67836811c375a66e46fdcbc0ca5.gif" data-w="1" width="353" height="201" style="width: 353px; height: 201px;"/>这种,直接写死了width,height,这个是真的烦

正则太差,网上也没有找到合适的案例,只能自己用死办法解决了

/**
* 去除图片中的width属性,height属性
*
* @param img 图片字符串
* @return 返回去除后的字符串
*/
public static String replaceImgWidthHeight(String img) {
// 去掉width属性
String patternWidth = "width=\"\\d*\"";
Pattern r = Pattern.compile(patternWidth);
Matcher m = r.matcher(img);
while (m.find()) {
img = img.replace(m.group(), "");
}
// 去掉height属性
String patternHeight = "height=\"\\d*\"";
Pattern rh = Pattern.compile(patternHeight);
Matcher mh = rh.matcher(img);
while (mh.find()) {
img = img.replace(mh.group(), "");
}
// 替换style中的width属性
String styleWidth = "width:.*?px;";
Pattern sw = Pattern.compile(styleWidth);
Matcher swh = sw.matcher(img);
while (swh.find()) {
img = img.replace(swh.group(), "max-width:100%;");
}
// 替换style中的height属性
String styleHeight = "height:.*?px;";
Pattern sh = Pattern.compile(styleHeight);
Matcher shh = sh.matcher(img);
while (shh.find()) {
img = img.replace(shh.group(), "height:auto;");
}
return img;
}

/**
* 获取HTML代码中的img标签,并修改图片属性为自适应
* @param str HTML代码
* @return
*/
public static String replaceHtmlImgWidthHeight(String str) {
String rg = "<img.*?>";
Pattern compile = Pattern.compile(rg);
Matcher matcher = compile.matcher(str);
while (matcher.find()) {
String img = matcher.group();
str = str.replace(img, StringUtil.replaceImgWidthHeight(img));
}
return str;
}

搞了半天,终于解决了,看效果也确实自适应了,没有超过屏幕了,搞定之后发现有个好简单的办法,直接在view中设置样式style="width: 100%;overflow: hidden;"
<view style="width: 100%;overflow: hidden;" v-html="product.remark"></view>
超出部分直接隐藏好了,看供应商那边的App也是这样做的,有些图片只显示了一半,思路很重要啊,一行代码超出隐藏,一分钟解决了,结果写了半天的正则,正则还是太差了,唉
各位路过的大佬有更好的解决方案,欢迎评论区贴出,好让我学习学习

最新文章

  1. 原生js实现Ajax
  2. POJ 2955 Brackets --最大括号匹配,区间DP经典题
  3. SQL Server日志文件(LDF文件)
  4. Git学习(一)——Git介绍与安装
  5. IT小喇叭-企业品牌宣传、产品营销推广的首选
  6. 使用Tcmalloc进行堆栈分析
  7. skinned mesh 蜘蛛样
  8. SGU 114
  9. C# 解压zip压缩文件
  10. MySQL --log-slave-updates
  11. Delphi 指针大全(光看不练是学不会的)
  12. 使用Gird++打印出现“Retrieving the COM class factory for component with CLSID”的解决办法
  13. C#实现给手机发送短信
  14. 从__acrt_first_block == header 谈起,记录dll链接不一致的问题
  15. Java开发知识之Java的包装类
  16. python第六章:三大利器(装饰器,迭代器,生成器)--小白博客
  17. java多线程快速入门(十二)
  18. Centos下Yum安装PHP 5.5、5.6、7.0
  19. 【AtCoder】ARC087
  20. 自动对比度的opencv实现

热门文章

  1. JavaScript学习系列博客_1_JavaScript简介
  2. 通过索引优化sql
  3. MySQL进阶之MySQL索引以及索引优化
  4. 百度官方给出的seo优化策略
  5. go语言之反射
  6. Spark保存的时候怎么去掉多余的引号转义
  7. 使用kind快速创建本地集群
  8. Android开发之下载服务器上的一张图片到本地java代码实现HttpURLConnection
  9. Codeforces Round #560 (Div. 3)A-E
  10. 关于移动端的文本框获取焦点时导致fixed或absolute定位的按钮被手机键盘顶上去的问题