微信小程序实现富文本图片宽度自适应的方法


Posted in Javascript onJanuary 20, 2019

引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做相应的处理,使小程序里图片显示正确

微信小程序实现富文本图片宽度自适应的方法

思路

  • 把图片的宽度改为手机屏幕对应的宽度

微信小程序需要知道的知识

  • 需要知道微信小程序里有自己的宽度标准,单位为rpx;
  • 针对所有不同尺寸的浏览器,微信小程序里规定屏幕宽为750rpx;

解决

WXML

<view class='html_detail'>
  <rich-text nodes='{{artical}}'></rich-text>
</view>

WXS

data={artical:''}

async onLoad(){
  const json = await api.getDetail();
  if(json !== null){
    this.artical = util.formatRichText(json.detail.description);
  }
}

若artical里只有图片,并且图片没有设置style和宽度/高度

util.js

function formatRichText(html){
  let newContent= html.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"');
  return newContent;
}

module.exports = {
  formatRichText
}

若artical里包含多种标签

util.js

/**
 * 处理富文本里的图片宽度自适应
 * 1.去掉img标签里的style、width、height属性
 * 2.img标签添加style属性:max-width:100%;height:auto
 * 3.修改所有style里的width属性为max-width:100%
 * 4.去掉<br/>标签
 * @param html
 * @returns {void|string|*}
 */
function formatRichText(html){
  let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){
    match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
    match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
    match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
    return match;
  });
  newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
    match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
    return match;
  });
  newContent = newContent.replace(/<br[^>]*\/>/gi, '');
  newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"');
  return newContent;
}

module.exports = {
  formatRichText
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript之对系统的toFixed()方法的修正
May 08 Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
javascript内存管理详细解析
Nov 11 Javascript
JavaScript中创建类/对象的几种方法总结
Nov 29 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
Mar 02 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
微信小程序实现弹框效果
May 26 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 #Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 #Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 #Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 #Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 #Javascript
JavaScript禁用右键单击优缺点分析
Jan 20 #Javascript
JavaScript中concat复制数组方法浅析
Jan 20 #Javascript
You might like
真正的ZIP文件操作类(php)
2007/07/21 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php获取汉字首字母的函数
2013/11/07 PHP
php实现倒计时效果
2015/12/19 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
python中time tzset()函数实例用法
2021/02/18 Python
python实现控制台输出颜色
2021/03/02 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
总经理致辞
2015/07/29 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技