uniapp初级入门-scrollview组件如何使用

使用Hbuiderx创建项目,然后新建页面,下面贴出代码。

水平滚动

<template>
	<view>
		<view>水平滚动</view>
		<scroll-view class="scorll" :scroll-x="true" :scroll-with-animation="true">
			<view class="item one">001</view>
			<view class="item two">002</view>
			<view class="item three">003</view>
			<view class="item four">004</view>
		</scroll-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">

	.scorll{
		height: 200rpx;
		//需要设置父元素不换行
		white-space: nowrap;
		.item {
			width: 100%;
			height: 200rpx;
			//需要设置子元素为行元素
			display: inline-block;
		}
		
		.one{
			background-color: red;
		}
		
		.two
		{
			background-color: yellow;
		}
		
		.three{
			background-color: green;
		}
		
		.four{
			background-color: blue;
		}
	}
</style>

垂直滚动

<template>
	<view>
		<view>垂直滚动</view>
		<scroll-view class="scorll" :scroll-y="true" :scroll-with-animation="true">
			<view class="item one">001</view>
			<view class="item two">002</view>
			<view class="item three">003</view>
			<view class="item four">004</view>
		</scroll-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">

	.scorll{
		//垂直滚动,需要设置父级高度
		height: 400rpx;

		.item {
			width: 100%;
			height: 400rpx;
		}
		
		.one{
			background-color: red;
		}
		
		.two
		{
			background-color: yellow;
		}
		
		.three{
			background-color: green;
		}
		
		.four{
			background-color: blue;
		}
	}
</style>

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 您可以使用 Vue.js 的计算属性来实现这个需求,在一个 scroll-view 组件的滚动事件中,通过改变数据来控制另一个 scroll-view 的滚动位置。例如: ``` <template> <view> <scroll-view :scroll-left="scrollLeft1" @scroll="scroll1"> <!-- 内容1 --> </scroll-view> <scroll-view :scroll-left="scrollLeft2"> <!-- 内容2 --> </scroll-view> </view> </template> <script> export default { data() { return { scrollLeft1: 0, scrollLeft2: 0 }; }, methods: { scroll1(e) { this.scrollLeft1 = e.detail.scrollLeft; this.scrollLeft2 = e.detail.scrollLeft; } } }; </script> ``` 这样,当第一个 scroll-view 滑动时,它的 `scroll-left` 值会改变,同时用该值更新第二个 scroll-view 的 `scroll-left` 值,进而控制第二个 scroll-view 的滚动位置。 ### 回答2: 目前有两个uniapp的scroll-view组件,要实现在H5页面滑动X轴时,一个scroll-view组件的滑动时,另一个scroll-view组件也能同时移动,但赋值的时候会有延时。要去掉延时,可以采用监听scroll-view组件的滚动事件,然后通过setData更新另一个scroll-view组件的scroll-top值。 首先,在需要实现滑动关联的页面的vue文件中,添加两个scroll-view组件,并分别给它们绑定滚动事件。例如: ``` <template> <div> <scroll-view scroll-x @scroll="handleScrollX"> <!-- 第一个scroll-view的内容 --> </scroll-view> <scroll-view scroll-x ref="scrollView2" :scrollTop="scrollTop2"> <!-- 第二个scroll-view的内容 --> </scroll-view> </div> </template> ``` 接着,在data中定义一个scrollTop2变量,并在methods中添加handleScrollX方法来监听第一个scroll-view的滚动事件,并更新第二个scroll-view的scrollTop值。代码如下: ``` <script> export default { data() { return { scrollTop2: 0 // 第二个scroll-view的scrollTop值 } }, methods: { handleScrollX(e) { // 获取第一个scroll-view的滚动值 const scrollTop1 = e.detail.scrollLeft; // 更新第二个scroll-view的scrollTop值 this.scrollTop2 = scrollTop1; } } } </script> ``` 这样,当第一个scroll-view在滑动时,通过监听其滚动事件并更新第二个scroll-view的scrollTop值,就可以实现两个scroll-view组件的滑动关联。由于只需要通过setData更新scrollTop2的值,不需要进行网络请求等耗时操作,所以不会有延时。 注意:以上代码仅供参考,具体的实现方式可能因为项目需求而有所差异。 ### 回答3: 目前有两个uniapp的scroll-view组件,想要实现在H5页面滑动X轴时,一个 scroll-view组件的滑动时,另一个scroll-view组件也能同时移动,但赋值的时候会有延时。你想知道有没有不会延时的方法,以及如何编写代码。 要实现两个scroll-view组件同时滑动,可以使用uniapp的页面通信功能。具体步骤如下: 1. 在App.vue中创建一个全局的Vue实例,用于进行页面通信。 ```javascript // App.vue export default { onLaunch() { Vue.prototype.$eventHub = new Vue(); }, } ``` 2. 在需要控制滑动的组件中,绑定touchmove事件,获取滑动距离,并通过$emit方法将滑动距离传递给全局Vue实例。 ```javascript <template> <scroll-view class="scroll-view" :style="style" @touchmove="onTouchMove"></scroll-view> </template> <script> export default { methods: { onTouchMove(event) { const { pageX } = event.changedTouches[0]; this.$eventHub.$emit('scroll', pageX); }, }, } </script> ``` 3. 在另一个需要跟随滑动的scroll-view组件中,监听全局Vue实例的事件$eventHub,并将接收到的滑动距离赋值给当前scroll-view的滑动距离。 ```javascript <template> <scroll-view class="scroll-view" :style="style" :scroll-left="scrollLeft"></scroll-view> </template> <script> export default { data() { return { scrollLeft: 0, }; }, mounted() { this.$eventHub.$on('scroll', this.onScroll); }, methods: { onScroll(distance) { // 给滑动距离增加一个适当的偏移,以避免直接赋值导致的延时问题 this.scrollLeft = distance + 5; }, }, } </script> ``` 通过以上步骤,你可以实现在H5页面滑动X轴时,一个 scroll-view组件的滑动时,另一个scroll-view组件也能同时移动。通过给滑动距离增加适当的偏移,可以避免赋值导致的延时问题。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米大王

有你的支持,我会更有动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值