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

 更新时间:2019年01月20日 11:36:09   作者:孟小欢  
小程序里图片会显示不全,这时就应该做相应的处理,使小程序里图片显示正确,这篇文章主要介绍了微信小程序实现富文本图片宽度自适应的方法,感兴趣的小伙伴们可以参考一下

引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,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
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Bootstrap table 定制提示语的加载过程

    Bootstrap table 定制提示语的加载过程

    bootstrap-table是在bootstrap-table的基础上写出来的,专门用于显示数据的表格插件。这篇文章主要介绍了Bootstrap table 定制提示语,需要的朋友可以参考下
    2017-02-02
  • javascript实现划词标记划词搜索功能修正版

    javascript实现划词标记划词搜索功能修正版

    javascript实现划词标记划词搜索功能修正版...
    2006-12-12
  • Three.js开发实现3D地图的实践过程总结

    Three.js开发实现3D地图的实践过程总结

    这篇文章主要给大家介绍了关于利用Three.js开发实现3D地图的实践过程,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Javascript进制转换实例分析

    Javascript进制转换实例分析

    这篇文章主要介绍了Javascript进制转换方法,实例分析了javascript实现进制转换的技巧,需要的朋友可以参考下
    2015-05-05
  • js实现tab切换效果实例

    js实现tab切换效果实例

    这篇文章主要介绍了js实现的tab标签切换效果,功能非常简单,实现了点击切换的效果,推荐给大家,有需要的小伙伴可以参考下。
    2015-09-09
  • JavaScript 布尔操作符解析  && || !

    JavaScript 布尔操作符解析 && || !

    在一门编程语言中,布尔操作符的重要性堪比相等操作符。如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了。布尔操作符一共有3个: 非、与、或
    2012-08-08
  • JavaScript实现网页计算器功能

    JavaScript实现网页计算器功能

    这篇文章主要为大家详细介绍了JavaScript实现网页计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • 详解JavaScript面向对象实战之封装拖拽对象

    详解JavaScript面向对象实战之封装拖拽对象

    本文主要介绍了JavaScript如何用面向对象的方式封装拖拽对象,通过3种方式来实现,帮助读者更好的理解其原理
    2021-06-06
  • Bootstrap打造一个左侧折叠菜单的系统模板(一)

    Bootstrap打造一个左侧折叠菜单的系统模板(一)

    这篇文章主要介绍了Bootstrap打造一个左侧折叠菜单的系统模板(一)的相关资料,需要的朋友可以参考下
    2016-05-05
  • 服务端预渲染之Nuxt(使用篇)

    服务端预渲染之Nuxt(使用篇)

    这篇文章主要介绍了服务端预渲染之Nuxt(使用篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论