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


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图片阅览组件
Nov 09 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
JS实现Enter键跳转及控件获得焦点
Aug 12 Javascript
JQuery之focus函数使用介绍
Aug 20 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
实例介绍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开发者的10个技巧
2011/02/25 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
js实现3D旋转相册
2020/08/02 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Python的历史与优缺点整理
2020/05/26 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
Python爬虫与反爬虫大战
2020/07/30 Python
一些Solaris面试题
2013/03/22 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
个人自我鉴定怎么写
2013/10/28 职场文书
安全生产汇报材料
2014/02/17 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
标准版离职证明书
2014/09/12 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
党支部综合考察意见
2015/06/01 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
MySQL 条件查询的常用操作
2022/04/28 MySQL