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


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 面向对象 命名空间
May 13 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
Nov 07 Javascript
使用js修改客户端注册表的方法
Aug 09 Javascript
jCallout 轻松实现气泡提示功能
Sep 22 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
JavaScript运行原理分析
Feb 09 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
Apr 09 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
CURL状态码列表(详细)
2013/06/27 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python中栈的原理及实现方法示例
2019/11/27 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
个人收入证明范本
2014/01/12 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
保险专业求职信
2014/07/07 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
班级管理经验交流材料
2015/11/02 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python