微信小程序使用rich-text解析富文本字符串的时候,遇到image标签图片很大超过屏幕

这篇具有很好参考价值的文章主要介绍了微信小程序使用rich-text解析富文本字符串的时候,遇到image标签图片很大超过屏幕。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

使用uniapp开发微信小程序,解析富文本文章需求

用到的组件:
  1. u-view2.0的u-parse 
  2. uniapp提供的rich-text

以上两种组件都是解析富文本的作用,一般用于富文本解析场景,比如解析文章内容,商品详情,带原生HTML标签的各类字符串等,此组件和uni-app官方的rich-text组件功能有重合之处,但是也有不同的地方。

相同点:
  • 二者都能解析HTML字符串
不同点:
  • 对于轻量、简单的字符串,rich-text性能更好
  • 对于复杂的字符串,使用parse组件效果更好,有更多的自定义属性和效果
总结:

如果是简单的场景,比如一段简单的文字和图片内容,可以优先使用rich-text组件,在文章内容,商品详情等复杂的文本详情,可以优先使用uview的u-parse 组件。

遇到的问题:

当使用uniapp提供的rich-text组件解析富文本的时候,如果返回的富文本字符串中img标签自带样式width很大,或者没有样式,原本图片就很大,这种情况,解析后图片宽度会超出屏幕,至于为什么会这样,是因为有可能这篇文章是在pc端展示的,并且标签内联样式写了很大的宽度。但是使用uview的u-parse 组件解析就不会出现这个问题,应该是组件内部做了处理。

解决办法:
当从接口获取富文本字符串的时候,通过正则去修改img里的内联style标签里的样式。

以下是我在项目中碰到使用正则的demo实例(仅供参考)。文章来源地址https://www.toymoban.com/news/detail-639534.html

<template>
	<div>
		<div style="padding:32rpx;background: #FFFFFF;width: 100%;">
			<!-- 解析富文本 -->
			<!-- <u-parse :content="contentData"></u-parse> -->
			<!-- 简单字符串用rich-text性能会好些 -->
			<rich-text :nodes="content"></rich-text>
		</div>
	</div>
</template>

<script>
	import { mapState } from 'vuex';
	export default {
		data() {
			return {
				content: ''
			}
		},
		props: {
			contentData: {//这里的props传递下拉的数据是父组件通过接口拿到的富文本字符串
				type: String,
				default: ''
			},
		},
		watch: {
			contentData: {
				immediate: true,
				handler(val) {
                    //使用正则先去掉img标签上的style样式
					this.content = val.replace(/style\s*?=\s*?([‘"])[\s\S]*?\1/g, '')
                    //再使用这种去重写内联style样式
					this.content = this.content.replace(/\<img/gi, '<img style="width:100%;height:auto"')
				}
			}
		},
		components: {},
		computed: {
			...mapState(["hasLogin", ])
		},
		mounted() {

		},
		onShow() {

		},
		methods: {

		}
	}
</script>

<style lang="scss" scoped>
</style>
下面是通过正则清除掉类名或者去除标签的demo: 
        let relTag = /<.+?>/g; //去除标签
        let relClass = /class\s*?=\s*?([‘"])[\s\S]*?\1/g;// 清除类名

        let newHtml = "";
        newHtml = newHtml.replace(relTag, '');
        newHtml = newHtml.replace(relClass, '');

到了这里,关于微信小程序使用rich-text解析富文本字符串的时候,遇到image标签图片很大超过屏幕的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】富文本rich-text的图片预览效果的几种方法

    使用原生小程序开发,实现在富文本rich-text中的图片预览效果的几种方法对比。 update:因为方案3wxparser后续没有再维护,解析微信公众号文章时会出现排版错误的问题。作为插件也很难二次开发。换成 mp-html 了 一个不需要用额外组件或插件的方法: 思路 :使用正则把图片的

    2023年04月08日
    浏览(55)
  • uniapp编译微信小程序富文本rich-text的图片样式不生效原因

    开始采用这个replace方法,编译后h5中生效,微信小程序中不生效 详细查看代码,是因为在后台增加文章的时候,富文本编辑器自动给图片设置了宽度,导致在小程序中的替换虽然成功了,但是不生效 修改思路:先把rich-text中的style属性替换掉,然后再替换想要的样式,也就是

    2024年01月16日
    浏览(49)
  • uniapp开发小程序使用rich-text富文本解析对图片大小处理

    1、问题: 在小程序中使用rich-text富文本解析时图片大小不能自适应而超出屏幕问题。 2、解决方式:如下   这是我绑定的值,在绑定值前,需要先进行对图片数据的处理后再使用即可。 3、 接口数据处理方法!!!!!(重点)  .replace(/img/gi, \\\'img style=\\\"width:100%;height:auto\\\"

    2024年02月11日
    浏览(54)
  • uniapp rich-text 富文本组件在微信小程序中自定义内部元素样式

    rich-text 富文本组件在 微信小程序 中,无法直接通过 外部css样式 控制文章内容样式。 解决方案:将传入的富文本内容截取并添加自定义样式类名 (1)全局配置filter方法,实现富文本内容截取转换,附上‘rich-txt-p’样式类 (2)在app.vue中编辑‘rich-txt-p’内容,即富文本需要

    2024年02月19日
    浏览(62)
  • 微信小程序 rich-text 超过 2 行显示省略号

    rich-text(富文本),如果想实现文本超过两行变成省略号,常规的 div 可以实现,但因为是在微信小程序中,同时使用的是 rich-text 返回的是富文本,所以不能简单的使用以下代码实现: 因为富文本使用的 rich-text 回显的,想着直接对这个标签写上这个 CSS,发现也无法达到想

    2024年02月03日
    浏览(40)
  • 【微信小程序入门到精通】— 这篇看完直接拿下 text 和 rich-text 组件!

    对于目前形式,微信小程序是一个热门,那么我们该如何去学习并且掌握之后去做实际项目呢? 为此我特意开设此专栏,在我学习的同时也将其分享给大家! 如果在往下阅读的过程中,有什么错误的地方,期待大家的指点! 1. text 是一种文本组件 2. text类似于HTML中span标签,

    2024年02月10日
    浏览(60)
  • 关于微信小程序、字节小程序rich-text中图片宽度超出范围解决办法

    微信小程序和字节小程序中的rich-text可以将后台富文本显示在前端,但是当图片过宽时微信小程序中就会超出显示范围,而字节小程序中却不会。(微信开发者是不是该优化下这个控件了 ) 微信小程序中    字节小程序中    那就解决微信小程序中的显示问题就可以了,可

    2024年02月11日
    浏览(56)
  • 微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image

    view组件就类似于html中的div标签 list.wxml list.wxss scroll-view组件就是滚动的视窗,使用scroll-view组件时,要想横向滚动或者纵向滚动时,需要在scroll-view组件上添加对应的属性 scroll-x 或 scroll-y,然后需要注意的是,纵向滚动需要给scroll-view组件限定高度,横向滚动则需要给scroll-vi

    2024年02月15日
    浏览(158)
  • 小程序rich-text单行省略

    小程序rich-text单行省略 返回数据为HTML字符串,需要在rich-text渲染, 需要在一行显示,超出部分进行隐藏 template片段 script方法 通过以上方法即可解决 参考文档:https://blog.csdn.net/u013611033/article/details/121535633

    2024年02月16日
    浏览(38)
  • 【uni-app】rich-text的使用

    rict-text可以支持部分HTML节点及属性 rict-text的属性如下: nodes 值为 HTML String 时,在组件内部将自动解析为节点列表, 推荐直接使用 Array 类型避免内部转换导致的性能下降 。App-nvue 和支付宝小程序不支持 HTML String 方式,仅支持直接使用节点列表即 Array 类型,如要使用 HTML

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包