小程序中 rich-text 显示富文本

本文介绍在小程序中使用rich-text组件显示富文本时遇到的问题及解决方案,详细讲解了如何处理后台返回的网页转义字符,确保富文本能正确解析并展示。

在使用 rich-text 来显示fuwq富文本时需要注意后台返回的数据是一个网页转义字符,直接使用rich-text的话是无法正常解析的。

那么需要使用下面的一个方法进行反转义即可

//小程序里的转义方法
escape2Html: function (str) {
    var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' };
    return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function (all, t) { return arrEntities[t]; });
  },
//调用在需要的地方直接调用即可。如:this.escape2Html(contents)
//然后在wxml中使用rich-text控件进行显示即可
<view wx:if="{{contents!=''}}" class='content'>
  <rich-text nodes="{{contents}}"></rich-text>
</view>
<view wx:else class='content2'>
  暂无
</view>

 

### 解决方案 在微信小程序中,`rich-text` 组件的富文本内容可能会出现图片或内容超出屏幕宽度的问题。为了解决这一问题,可以通过以下方法实现富文本内容的自适应显示。 #### 方法一:通过正则表达式动态添加样式 可以在数据处理阶段,使用正则表达式为所有的 `<img>` 标签添加 `style` 属性,设置 `max-width: 100%` 和 `height: auto`,以确保图片能够自适应容器宽度[^2]。 以下是代码示例: ```javascript // 假设 res.data.content 是从服务器获取的富文本内容 let content = res.data.content.replace(/<img/gi, '<img style="max-width:100%;height:auto"'); that.setData({ detailDataContent: content }); ``` #### 方法二:通过 CSS 控制容器样式 除了修改 HTML 内容外,还可以通过设置 `rich-text` 容器的样式来限制内容宽度。例如,可以为 `rich-text` 的父容器设置固定宽度,并结合 CSS 样式控制子元素的行为[^1]。 以下是 WXML 和 WXSS 示例: ```html <view class="detail-text"> <rich-text class="rich-box" :nodes="detailDataContent"></rich-text> </view> ``` ```css .detail-text { width: 100%; overflow: hidden; } .rich-box img { max-width: 100%; height: auto; } ``` #### 方法三:结合以上两种方法 为了确保兼容性,可以同时使用正则表达式和 CSS 样式。正则表达式用于处理图片标签的样式,而 CSS 则用于控制其他可能超出屏幕的内容。 以下是综合代码示例: ```javascript let content = res.data.content.replace(/<img/gi, '<img style="max-width:100%;height:auto"'); that.setData({ detailDataContent: content }); ``` ```html <view class="detail-text"> <rich-text class="rich-box" :nodes="detailDataContent"></rich-text> </view> ``` ```css .detail-text { width: 100%; overflow: hidden; } .rich-box img { max-width: 100%; height: auto; } ``` ### 注意事项 - 如果富文本内容中包含其他嵌套结构(如表格或块级元素),可能需要额外的样式调整以避免溢出。 - 在某些情况下,`rich-text` 不支持部分 HTML 标签或属性,需根据实际情况进行调试。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itxiaolong3

打赏可以,但别打我就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值