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


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插件
Nov 24 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
Jul 28 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
JS功能代码集锦
May 04 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
Node.js实现兼容IE789的文件上传进度条
Sep 02 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
vue实现前端分页完整代码
Jun 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 IPV6正则表达式验证代码
2010/02/16 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
jQuery设计思想
2017/03/07 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python 中的int()函数怎么用
2017/10/17 Python
scrapy爬虫实例分享
2017/12/28 Python
Python使用re模块验证危险字符
2020/05/21 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
自我评价中英文语句
2013/11/30 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
我为自己代言广告词
2014/03/18 职场文书
党支部活动策划方案
2014/08/18 职场文书
母亲节寄语大全
2015/02/27 职场文书
劳动仲裁调解书
2015/05/20 职场文书
微信早安问候语
2015/11/10 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python