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


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 相关文章推荐
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 Javascript
js同比例缩放图片的小例子
Oct 30 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
JavaScript原始值与包装对象的详细介绍
May 11 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
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php图片上传类 附调用方法
2016/05/15 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
几道数据库的面试题或笔试题
2014/05/31 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
生产车间主管岗位职责
2013/12/28 职场文书
企业内部培训方案
2014/02/04 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
党员创先争优活动总结
2014/05/04 职场文书
计划生育宣传标语
2014/06/21 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers