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


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 相关文章推荐
使用新的消息弹出框blackbirdjs
Oct 16 Javascript
一些javascript一些题目的解析
Dec 25 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
Sep 02 Javascript
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
Feb 06 Javascript
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
jQuery simpleModal插件的使用介绍
Aug 30 Javascript
JavaScript表单验证实现代码
May 22 Javascript
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
vue强制刷新组件的方法示例
Feb 28 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中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
微信小程序wepy框架笔记小结
2018/08/08 Javascript
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
项目建议书怎么写
2014/05/15 职场文书
董事长秘书工作职责
2014/06/10 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
三行辞职书范文
2015/02/26 职场文书
基石观后感
2015/06/12 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android