3***@qq.com
3***@qq.com
  • 发布:2021-08-30 13:19
  • 更新:2021-08-31 21:40
  • 阅读:1921

【报Bug】多张图片使用widthFix方式渲染时,图片的height参数产生多位小数点,图片采用block方式显示,小数点经多张前图片的height值累加后会在某张图片底部出现空白间隙

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10

HBuilderX类型: 正式

HBuilderX版本号: 3.2.5

第三方开发者工具版本号: 1.05.2108130

基础库版本号: 2.18.0

项目创建方式: HBuilderX

App下载地址或H5⽹址: 微信小程序:小海报惠生活

示例代码:
<template>  
    <view class="pageBody">  
        <view class="articleBody">  
            <mp-html class="richBox" externStyle="richBox" :content="reArticleBody" :lazy-load="true"  
                :loading-img="nolist" :preview-img="false" />  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                title: 'Hello',  
                articleBody: '<p class="ql-align-center"><img src="https://www.i-xiaohaibao.com/file/202107/3f63d4ce20c142b4a547383a18688f16.jpg"><img src="https://www.i-xiaohaibao.com/file/202108/287f83251c2a48b3b2f3e3e7bc11b52f.jpg"><img src="https://www.i-xiaohaibao.com/file/202108/04a4c48aa14646768039e7be299a71f9.jpg"><img src="https://www.i-xiaohaibao.com/file/202108/185067658d1e40b59b2b8fa8a75142a6.jpg"><img src="https://www.i-xiaohaibao.com/file/202108/922c0fd2ec0e4681a488191eb1372746.jpg"></p><p class="ql-align-center"><img src="https://www.i-xiaohaibao.com/file/202108/d431fe9b16a8403fab1cbf00953f99bf.jpg"></p>',  
                nolist: 'https://www.i-xiaohaibao.com/file/202108/b44dff568e9543a18e44ac2d04e203a1.png',  
            }  
        },  
        computed: {  
            reArticleBody() {  
                return this.articleBody.replace(  
                        /<p([\s\w"=\/\.:;]+)((?:(style="[^"]+")))/ig, '<p')  
                    .replace(/<p>/ig, '<p style="font-size: 14px; line-height: 25px;">')  
                    .replace(/<img([\s\w"-=\/\.:;]+)((?:(height="[^"]+")))/ig, '<img$1')  
                    .replace(/<img([\s\w"-=\/\.:;]+)((?:(width="[^"]+")))/ig, '<img$1')  
                    .replace(/<img([\s\w"-=\/\.:;]+)((?:(style="[^"]+")))/ig, '<img$1')  
                    .replace(/<img([\s\w"-=\/\.:;]+)((?:(alt="[^"]+")))/ig, '<img$1')  
                    .replace(/<img([\s\w"-=\/\.:;]+)/ig,  
                        '<img style="max-width: 100%;vertical-align: bottom;display:block;margin:0 auto;" $1');  
            }  
        },  
    }  
</script>  

<style>  
    .pageBody {  
        display: flex;  
        flex-direction: column;  
        align-items: center;  
        justify-content: center;  
        width: 750rpx;  
        max-width: 750rpx;  
        padding: 30rpx;  
        box-sizing: border-box;  
    }  
    .articleBody{  
        width: 100%;  
        box-sizing: border-box;  
    }  
</style>

操作步骤:

复现

  • demo项目:https://gitee.com/xuwenqian3146179006/bugdemo.git
  • 文章详情页,一张竖向长图海报,经切片成多张小图片后,竖向排列渲染
  • 每张图片,使用“widthFix”模式渲染,且将盒模型定义为“display:block”或“display:flex”;
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202107/3f63d4ce20c142b4a547383a18688f16.jpg'" mode="widthFix" />  
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202108/287f83251c2a48b3b2f3e3e7bc11b52f.jpg'" mode="widthFix" />  
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202108/04a4c48aa14646768039e7be299a71f9.jpg'" mode="widthFix" />  
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202108/185067658d1e40b59b2b8fa8a75142a6.jpg'" mode="widthFix" />  
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202108/922c0fd2ec0e4681a488191eb1372746.jpg'" mode="widthFix" />  
    <image :style="'display:block;vertical-align: bottom;width:100%;height:1px;'" :src="'https://www.i-xiaohaibao.com/file/202108/d431fe9b16a8403fab1cbf00953f99bf.jpg'" mode="widthFix" />

预期结果:
  • image组件的widthFix模式下,计算的图片height参数值取整数;
  • 以避免,多图累加产生小数点,并累加到下一张图中;
  • 多张图,竖向排列后,紧密衔接在一起,使其看起来没有间隔;
  • 图片允许不超过“0.5px”的伸缩误差;

实际结果:
  • 第N张图的height值,经前几张图片height值小数点的累加,一旦超过“0.5px”,则会在图片底部出现空白间隙

bug描述:

image组件中的widthFix模式下,图片的height值包含有多位小数点

  • 当多张图片,竖向排列时,每张图片height的小数点值,未渲染出来,而是累加到下一张图片中;
  • 当小数点的累加值达到或超过“0.5px”时,则按“1px”来渲染;
  • 对于图片来说,这多出来的“1px”不属于图片实际的渲染空间,所以不渲染;
  • 多张图片,竖向排列时,出现空白线性间隙;
  • 举例:文章详情页,一张竖向长图海报,经切片成多张小图片后,竖向排列渲染
2021-08-30 13:19 负责人:无 分享
已邀请:
x***@163.com

x***@163.com

复制代码之后没发现有间隙的情况出现呢?有没有你的bug预览图?

  • 3***@qq.com (作者)

    要在小程序中复现,H5端没问题(亲测过)

    2021-08-30 16:01

3***@qq.com

3***@qq.com (作者)

  • 在第N张图后,出现空白间隙

3***@qq.com

3***@qq.com (作者)

1、取巧的方案:给每张图片添加:“margin-top:-0.5px;”

---- 方案来源于uniapp的mp-html插件作者提供

该问题目前已经被锁定, 无法添加新回复