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


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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
用javascript父窗口控制只弹出一个子窗口
Apr 10 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
jquery 图片截取工具jquery.imagecropper.js
Apr 09 Javascript
使用jQuery轻松实现Ajax的实例代码
Aug 16 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
May 23 Javascript
JavaScript操作select元素和option的实例代码
Jan 29 Javascript
JS实现异步上传压缩图片
Apr 22 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 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实现快速排序法函数代码
2012/08/27 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
php框架知识点的整理和补充
2021/03/01 PHP
5 cool javascript apps
2007/03/24 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python实现简易动态时钟
2018/11/19 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
标准的毕业生自荐信
2014/04/20 职场文书
保证书范文大全
2014/04/28 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
个人存款证明书
2014/10/18 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript