uni-app waterfall组件和refresh编译后存在一条无法消除的白线

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

uni-app waterfall组件和refresh编译后存在一条无法消除的白线

信息类别 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 windows10
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 14
手机厂商 OPPO
手机机型 OPPO reno 10
页面类型 nvue
vue版本 vue3
打包方式 离线
项目创建方式 HBuilderX

操作步骤:

  • 向下滑动屏幕即可 安卓设备

预期结果:

  • 没有白线

实际结果:

  • 有白线

bug描述:

// 父组件  
<waterfall class="plaza-list"  
           column-count="4"  
           :column-gap="10"  
           :left-gap="sideGap"  
           :right-gap="sideGap"  
           show-scrollbar="false"  
           enable-back-to-top="false"  
           always-scrollable-vertical="true"  
           loadmoreoffset="100"  
           @loadmore="loadNext">  
    //  app-refresh-view 封装的子组件  经过反复测试 就是这个组件的问题  
    <app-refresh-view :load="load"/>  
    <cell v-for="workShow in testArr" :key="workShow.id">  
        <view class="test"> {{ workShow.id }} </view>  
    </cell>  
</waterfall>

// 子组件  
<template>  
    <refresh :display="isRefreshing ? 'show' : 'hide'"  
             @refresh="onRefresh"  
             @pullingdown="onPullingDown"  
             userInteractionEnabled="false">  
        <view class="app-refresh-view" :style="styles.refresh">  
            <app-loading-animation v-if="refreshFlag" :show="refreshFlag" :size="iconSize" :white="iconWhite"/>  
        </view>  
    </refresh>  
</template>

一张是正常的,一张是往下滑动时出现一条白线,触发非常简单。


4 回复

下面二维码是app下载地址 安装后 点击第二个tab 到广场页 下拉即可复现


感谢反馈,我测试一下,有进展会同步到这里,这个有测试其他安卓设备和 ios 设备吗,这些设备展示如何

我试了试基础的 demo,不包含任何样式的 refresh 不会有白条,需要你具体提供一下你的 app-loading-animation 是做啥的,或者你尝试给所有的 refresh 子组件设定 background/border 试试,定位到底是哪个样式影响了你。
我没有成功复现你的问题,提供更多信息,有助于定位和解答你的问题。

在处理uni-app中的waterfall组件与refresh功能编译后出现的白线问题时,通常这可能与组件的样式、布局或渲染方式有关。由于直接无法查看具体的项目代码和环境配置,以下是一些可能的代码调整和检查方向,你可以根据实际情况进行调试。

1. 检查waterfall组件的样式

首先,确保waterfall组件的容器没有额外的内边距或外边距导致白线。可以通过设置明确的样式来排除这种可能性:

.waterfall-container {
  padding: 0;
  margin: 0;
  border: none; /* 确保没有边框导致白线 */
  box-sizing: border-box; /* 确保padding和border包含在元素总宽度内 */
}

2. 调整refresh组件的位置和样式

如果白线出现在下拉刷新区域,检查refresh组件的样式设置,特别是其高度和位置属性:

<template>
  <scroll-view scroll-y="true" @scrolltolower="onRefresh">
    <refresh :show="isRefreshing" @refresh="handleRefresh">
      <!-- 刷新内容 -->
    </refresh>
    <waterfall :column-num="3">
      <!-- waterfall内容 -->
    </waterfall>
  </scroll-view>
</template>

<script>
export default {
  data() {
    return {
      isRefreshing: false
    };
  },
  methods: {
    onRefresh() {
      this.isRefreshing = true;
      this.handleRefresh().then(() => {
        this.isRefreshing = false;
      });
    },
    handleRefresh() {
      // 模拟异步刷新操作
      return new Promise(resolve => setTimeout(resolve, 2000));
    }
  }
};
</script>

<style>
/* 确保refresh组件没有导致白线的样式 */
.refresh-container {
  position: relative; /* 确保定位正确 */
  height: 60px; /* 明确设置高度 */
  overflow: hidden; /* 防止内容溢出 */
}
</style>

3. 调试和检查布局

使用开发者工具检查编译后的页面布局,查看是否有未被正确覆盖或渲染的元素。特别注意检查页面底部或顶部是否有未预期的元素或空白区域。

4. 考虑平台差异

uni-app支持多平台,不同平台(如小程序、H5、App)的渲染机制可能有所不同。确保在不同平台上测试,查看问题是否普遍存在或特定于某个平台。

通过上述步骤,你应该能够定位并解决waterfall组件与refresh功能编译后出现的白线问题。如果问题依旧存在,可能需要更深入地检查具体的组件实现或寻求uni-app社区的帮助。

回到顶部