小程序富文本rich-text组件渲染 img 样式修改问题

在开发时,要用到将富文本编辑器中的内容渲染到页面,涉及图片样式的修改,尝试了直接更改样式,发现并没有效果,这是因为原有富文本编辑器中的图片原有样式级别更高,后面加的样式不能够覆盖原有的样式,需要先将元素原有样式清除,再重新增加新的样式,整理如下:

<!-- index.wxml -->
<view class="detailBox">
	<rich-text class="detailContent" nodes='{{htmlSnip}}'></rich-text>
</view>
/* index.js */
Page({
	data:{
	   htmlSnip:''
	},
	clickDetail(e){
		var item = e.currentTarget.dataset.item;
		const htmlSnip = item.prizeDescription;	
		//先清除原有样式
	    let newhtml = htmlSnip.replace(/<img[^>]*>/gi, function (match, capture) {
	      match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');	      
	      return match;
	    });	 
	    //再设置新的样式  
	    newhtml = newhtml.replace(/\<img/gi, '<img style="max-width:60%;height:auto;text-align:center;"');	
	    this.setData({
	      htmlSnip: newhtml
	    })
	 }
 })

同样,其他标签的也可通过以上方式修改样式,小伙伴们可以尝试一下

关于rich-text组件的用法可查看官方文档:rich-text官方文档
关于replace的用法可参考:replace的用法总结

小程序中,`rich-text`组件用于渲染富文本内容,它支持基本的HTML标签和样式,允许开发者在小程序中展示更为丰富和格式化的文本信息。使用`rich-text`组件的基本步骤如下: 1. 在JSON配置文件中声明使用`rich-text`组件: 在小程序页面的`.json`配置文件中,需要将`rich-text`组件添加到页面的`usingComponents`列表中,如下所示: ```json { "usingComponents": { "rich-text": "path/to/the/custom/rich-text/component" } } ``` 如果使用的是小程序的标准组件,则无需此步骤。 2. 在WXML文件中添加`rich-text`组件标签: 在小程序页面的`.wxml`文件中,将`rich-text`标签添加到需要显示富文本内容的位置,如下所示: ```xml <rich-text nodes="{{nodes}}"></rich-text> ``` 其中`nodes`是一个数组,包含了富文本的结构和内容信息。 3. 准备富文本内容数据: 在小程序页面的`.js`文件中,需要准备一个数组来表示富文本的内容。这个数组中的每个元素都是一个对象,描述了一个富文本节点。节点可以是文本节点或者标签节点,比如: ```javascript Page({ data: { nodes: [ { name: 'div', attrs: { class: 'container' }, children: [ { type: 'text', text: 'Hello, world!' } ] } ] } }) ``` 在这个例子中,`nodes`数组定义了一个`div`容器,并在其中包含了一个文本节点。 4. 使用`rich-text`组件的特性: 除了基本的富文本显示外,`rich-text`组件还支持其他特性,例如: - `space`属性可以控制节点之间的空格,比如`en`或`ensp`等。 - `selectable`属性可以使得文本可被选中。 - 可以通过`bindtap`事件监听点击事件等。 使用`rich-text`组件时需要注意的是,它只能显示标签和样式,不能执行任何脚本,以确保小程序的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值