uniapp中scroll-view利用实现scroll-into-view的隐藏bug

问题

scroll-view中scroll-into-view的值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素。
但这只能保证元素显示出来,不保证元素完全显示出来,每次滚到到元素内部的位置高度是随机的。

解决方法

为了使元素的顶部显示出来,可以在元素外层包一个view,然后顶部给一个空的view当定位
如图:
在这里插入图片描述
部分代码:

<scroll-view :scroll-into-view="scrollName" :scroll-y="true" :show-scrollbar="false" ref="scrollView" class="flex-1">
	<view v-for="(item,index) in foodList" :key="item.id" style="position: relative;"> //外层view
		<view :id="`food${item.id}`" style="position: absolute;top: -80rpx;"></view> //用来定位的空view
		<view></view> //元素
	</view>
</scroll-view>

通过scrollName定位空view的id,就可以实现使元素的顶部显示出来,即完整显示这个元素。

uni-app中,`<scroll-view>` 组件用于创建滚动视图容器,用户可以在其中滑动查看内容。当想要实现在 `<scroll-view>` 中左右两侧的内容联动时,通常需要利用到事件监听、数据绑定以及一些自定义的计算逻辑。 ### 实现原理 1. **事件监听**:首先,在主 `<scroll-view>` 内部设置滚动事件,如 `bindscroll` 或者直接使用 `@scroll`,以便获取滚动位置信息。 ```javascript <scroll-view scroll-x="true" bindscroll="onScroll"> <!-- 内容区域 --> </scroll-view> ``` 其中 `scroll-x="true"` 表示水平滚动。 JavaScript 部分: ```javascript export default { data() { return { scrollLeft: 0 // 初始化滚动位置为0 }; }, methods: { onScroll(e) { this.scrollLeft = e.detail.scrollX; // 获取当前滚动位置 } } }; ``` 2. **数据绑定**:基于获取到的滚动位置,可以将这个值应用于另一个 `<scroll-view>` 的 `scroll-left` 属性上,以此实现联动效果。 ```html <view class="container"> <!-- 左侧联动滚动区 --> <scroll-view scroll-x "true" :scroll-left="scrollLeft"> <!-- 左侧内容 --> </scroll-view> <!-- 右侧内容 --> <scroll-view scroll-y="true"> <!-- 右侧内容 --> </scroll-view> </view> ``` 3. **计算属性/方法**:如果需要更复杂的效果,比如根据滚动的位置调整右侧内容的高度或其他动态属性,可以使用 Vue.js 的计算属性或方法来实现。 ### 相关问题: 1. 在 `uni-app` 中如何控制滚动视图的动画效果? 2. 如何在 `uni-app` 中实现垂直滚动视图的自动跟随? 3. `uni-app` 中如何优化滚动性能避免卡顿现象?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值