uni-app富文本图片在h5展示正常,转成支付宝小程序高度不自适应,怎么处理呢?

发布于 1周前 作者 itying888 来自 Uni-App

uni-app富文本图片在h5展示正常,转成支付宝小程序高度不自适应,怎么处理呢?

操作步骤:

app_about.replace(/\<img/gi, '<img mode="widthFix" style="max-width:100%" ');

预期结果:

element.style
background-image:url("http://kjr.jkrkj1.cn/uploads/image/20210906102430329.png")
max-width:100%
height:256.5px
display:block
margin:10px 0px
background-size:contain
background-position:center center
width:720px
padding:0px

实际结果:

element.style
background-image:url("http://kjr.jkrkj1.cn/uploads/image/20210906102430329.png")
max-width:100%
height:513px
display:block
margin:10px 0px
background-size:contain
background-position:center center
width:720px
padding:0px

bug描述:

uni富文本图片在h5展示正常,转成支付宝小程序高度就不自适应了,怎么处理呢?

图片

Image 1 Image 2 Image 3

项目信息
产品分类 uniapp/小程序/阿里
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.4.7
第三方开发者工具版本号 1.5
基础库版本号 3
项目创建方式 HBuilderX

5 回复

用的哪个富文本组件


换一个 换成 uparse试试

或者官方的的rich-text

在 uni-app 中,富文本内容(如 HTML)在 H5 端展示正常,但在支付宝小程序中图片高度不自适应的问题,通常是由于支付宝小程序的渲染机制与 H5 不同导致的。以下是一些可能的解决方案:

1. 使用 rich-text 组件

uni-app 提供了 rich-text 组件用于渲染富文本内容。你可以尝试使用 rich-text 组件来渲染富文本,并确保图片的样式正确。

<rich-text :nodes="htmlContent"></rich-text>

htmlContent 中,确保图片的样式设置了 max-width: 100%height: auto,以便图片能够自适应宽度和高度。

data() {
  return {
    htmlContent: '<img src="your-image-url" style="max-width: 100%; height: auto;" />'
  }
}

2. 使用 image 标签并手动处理图片尺寸

如果你发现 rich-text 组件无法满足需求,可以尝试将富文本中的图片提取出来,使用 image 标签手动渲染,并设置图片的宽度和高度。

<image v-for="(img, index) in images" :key="index" :src="img.src" mode="widthFix"></image>

mode 属性中,使用 widthFix 可以让图片根据宽度自适应高度。

3. 使用 CSS 强制图片自适应

在支付宝小程序中,你可以通过 CSS 强制图片自适应。确保在全局样式或组件样式中添加以下 CSS 规则:

img {
  max-width: 100%;
  height: auto;
}

4. 使用 uni.getImageInfo 获取图片尺寸并动态设置

如果你需要更精确地控制图片的尺寸,可以使用 uni.getImageInfo 获取图片的原始尺寸,然后根据容器的宽度动态计算并设置图片的高度。

uni.getImageInfo({
  src: 'your-image-url',
  success: (res) => {
    const width = res.width;
    const height = res.height;
    const containerWidth = 300; // 假设容器宽度为 300px
    const scaledHeight = (containerWidth / width) * height;
    this.imageHeight = scaledHeight;
  }
});

然后在模板中动态设置图片的高度:

<image :src="imageUrl" :style="{ height: imageHeight + 'px' }"></image>

5. 使用 web-view 组件

如果以上方法都无法满足需求,你可以考虑使用 web-view 组件来嵌入一个 H5 页面,这样可以在小程序中直接使用 H5 的渲染机制。

<web-view src="https://your-h5-page-url"></web-view>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!