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


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 相关文章推荐
关于恒等于(===)和非恒等于(!==)
Aug 20 Javascript
用javascript获取textarea中的光标位置
May 06 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
JavaScript按位运算符的应用简析
Feb 04 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
在Express中提供静态文件的实现方法
Oct 17 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实现今天是星期几的几种写法
2013/09/26 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
vue中轮训器的使用
2019/01/27 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
python实现感知器算法(批处理)
2019/01/18 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Python实现仿射密码的思路详解
2020/04/23 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
即兴演讲稿
2014/01/04 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
小学生家长意见
2015/06/03 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
python如何读取和存储dict()与.json格式文件
2022/06/25 Python