【uniapp+vue3】scroll-view实现纵向自动滚动及swiper实现纵向自动滚动

news2024/11/27 21:37:24

scroll-view本身不支持自动滚动,通过scroll-top属性控制滚动,但是不可以循环滚动

		<scroll-view class="notice-bar" scroll-y="true" ref="scrollViewRef" 
		:scroll-top="data.scrollViewTop"
				scroll-with-animation>
				<view class="carousel-wrapper">
					<view class="notice-item" 
					v-for="(item,index) in data.notices"    		
							:key='index'>
						<image :src="item.icon" alt=""></image>
						<text class="notice-text">{{item.text}}</text>
					</view>
				</view>
			</scroll-view>
<script lang="ts" setup>
import { reactive, getCurrentInstance, onMounted, onUnmounted, ref } from "vue";
const data = reactive({
		notices: [
			{
				icon: "/static/images/common/1.png",
				text: "这是第1条滚动通知"
			},
			{
				icon: "/static/images/common/2.png",
				text: "这是第2条滚动通知"
			},
			{
				icon: "/static/images/common/3.png",
				text: "这是第3条滚动通知"
			},
		],
		timer: null,
		currentIndex: 0,
		scrollViewTop: 0
	})
	onMounted(() => {
		startScroll();
	})
	onUnmounted(() => {
		stopScroll()
	})
		function startScroll() {
		if (data.notices.length <= 1) return
		data.timer = setInterval(() => {
			data.currentIndex++;
			if (data.currentIndex >= data.notices.length) {			
				stopScroll()
			} else {
				data.scrollViewTop = data.currentIndex * 30
			}
		}, 1000);
	}
	function stopScroll() {
		clearInterval(data.timer);
		data.timer = null;
	}
	</script>
	.invite-rules {
			display: flex;
			justify-content: center;
			text-align: center;
			height: 50rpx;
			line-height: 50rpx;		
			.notice-bar {				
				width: 60%;
				height: 100%;
				padding: 0 15rpx;
				margin-top: 25rpx;
				margin-right: 25rpx;
				background-color: rgba(87, 184, 253, .5);
				border-radius: 25rpx;
				white-space: nowrap;
				.carousel-wrapper {				
					display: inline-block;				
					.notice-item {
						display: flex;
						margin-top: 10rpx;					
						image {
							width: 40rpx;
							height: 40rpx;
							border-radius: 50%;
							margin-right: 10rpx;
						}
						.notice-text {
							margin-right: 10rpx;
							font-size: 18rpx;
							color: #FFFFFF;
							line-height: 36rpx;
						}
					}
				}

			}

在这里插入图片描述
使用swiper组件实现很简单,封装下即可用,且支持衔接滑动

<template>
	<view class="">
		<swiper :autoplay="true" :interval="3000" indicator-color="#999" indicator-active-color="#333" circular vertical
			class="notice-bar">
			<swiper-item v-for="(item, index) in list" :key="index" class="notice-item ">
				<image :src="item.imageUrl" class="notice-image"></image>
				<text class="notice-text">{{ item.text }}</text>
			</swiper-item>
		</swiper>
	</view>
</template>

<script lang="ts" setup>
	const props = defineProps({
		list: Array,
	});
</script>

<style lang="scss" scoped>
	.notice-bar {
		display: flex;
		width: 410rpx;
		height: 50rpx;
		line-height: 50rpx;
		padding: 0 15rpx;
		margin-top: 25rpx;
		margin-right: 25rpx;
		background-color: rgba(87, 184, 253, .5);
		border-radius: 25rpx;
		white-space: nowrap;

		.notice-item {
			display: flex;
			// justify-content: center;
			align-items: center;

			.notice-image {
				width: 40rpx;
				height: 40rpx;
				border-radius: 50%;
				margin-right: 10rpx;
			}

			.notice-text {
				margin-right: 10rpx;
				font-size: 18rpx;
				color: #FFFFFF;
				line-height: 36rpx;
			}

		}

	}
</style>

父组件中使用

<view class="invite-rules">
			<scrollSwiper :list="data.notices" />
			<view class="rules" >
		xxxx
			</view>
		</view>
.invite-rules {
			display: flex;
			justify-content: center;
			text-align: center;
			height: 50rpx;
			line-height: 50rpx;
			
		}
<script lang="ts" setup>
import { reactive, getCurrentInstance, onMounted, onUnmounted, ref } from "vue";
import scrollSwiper from './component/scrollSwiper.vue'
const data = reactive({
	
		notices: [
			{
				imageUrl: "/static/images/common/1.png",
				text: "这是1条滚动通知"
			},
			{
				imageUrl: "/static/images/common/1.png",
				text: "这是2条滚动通知"
			},
			{
				imageUrl: "/static/images/common/1.png",
				text: "这是3条滚动通知"
			},
		],
		})
		

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Power BI 傻瓜入门 18. 让您的数据熠熠生辉

本章内容包括&#xff1a; 配置Power BI以使数据增量刷新发现使用Power BI Desktop and Services保护数据集的方法在不影响性能和完整性的情况下管理海量数据集 如果有更新的、更相关的数据可用&#xff0c;旧数据对组织没有好处。而且&#xff0c;老实说&#xff0c;如果数据…

一文搞懂“支付·清结算·账务”全局

《上帝视角看支付&#xff0c;总架构解析》 对支付的宏观层面做了分析&#xff0c;详解了整个支付体系每一层的架构和业务模型&#xff0c;而每一层的企业内部支付体系建设是什么样的&#xff1f;会涉及到哪些环节和系统&#xff1f;每个系统会涉及到哪些单据和逻辑&#xff0c…

工业级环网交换机的功效和用途

十年前&#xff0c;工业级环网交换机是一个被忽视的领域&#xff0c;在自动化中只占据了很小的一部分&#xff0c;并没有引起太多厂商的重视。随着自动化技术的不断成熟&#xff0c;工业以太网的广泛采用以及大型工业控制网络的建设&#xff0c;自动化厂商也不能忽视丰富产品线…

中文版goole浏览器支持小于12px的文字

1、说明&#xff1a; 中文版goole浏览器默认不支持小于12px的文字&#xff0c;英文版支持。 2、可浏览器设置&#xff1a; goole浏览器前往 chrome://settings/fonts&#xff0c;更改浏览器设置。 3、可代码设置 -webkit-transform:scale() 说明&#xff1a;transform:sca…

数字组合-第10届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第1讲。 数字组合&#xff…

01-学成在线项目基础环境模块搭建

基础工程搭建 项目根目录 创建一个空工程xuecheng-plus即项目的根目录,进入Project Structure检查jdk是否配置正确 新增.gitignore文件用来设置工程中不需要向仓库提交的内容 HELP.md target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/** !**/src/test/** #### STS …

天津重点大数据培训 大数据培训的三个重要内容

随着互联网的发展和技术的进步&#xff0c;大数据的应用范围越来越广泛&#xff0c;对于企业和个人来说&#xff0c;学习和掌握大数据技术已经成为了必不可少的一项能力。大数据技术是当前和未来的发展方向&#xff0c;对于想进入互联网行业或从事相关技术工作的人来说&#xf…

毕业论文常用分析方法

毕业论文选题结束后&#xff0c;需要根据不同的研究主题以及研究目的确定相应的分析方法。同类型的研究方法有很多种&#xff0c;今天梳理了毕业论文写作的常用分析方法&#xff0c;分模块进行汇总整理&#xff0c;方便大家对照查找。 一、基本描述分析 基本描述统计分析包括频…

大坝水库安全监测终端MCU,智能化管理的新篇章!

我国目前拥有超过9.8万座水库大坝&#xff0c;其中超过95%为土石坝&#xff0c;这些大坝主要是在上世纪80年代以前建造的。这些水库大坝在保障防洪、发电、供水、灌溉等方面发挥了巨大的作用&#xff0c;但是同时也存在一定的安全风险&#xff0c;比如坝体结构破损、坝基渗漏、…

Linux环境基础开发工具使用(一)万字讲解

文章目录 一、Linux 软件包管理器 yum1、什么是软件包2、关于 rzsz3、查看软件包4、如何安装软件5、如何卸载软件 二、Linux编辑器——vim1、IDE例子2、Linux编辑器-vim使用3、 vim的基本概念4、 vim的基本操作5、 vim正常模式命令集1、插入模式2、从插入模式切换为命令模式3、…

建模和图表工具:Software Ideas Modeler Crack

用于图表、软件设计和分析的 CASE 工具 Software Ideas Modeler 是一款智能CASE 工具和 图表软件&#xff0c;支持 UML、SysML、ERD、BPMN、ArchiMate、流程图、用户故事、线框图。 提升用户体验和人工智能集成 - Software Ideas Modeler 14.05 最近发布的 14.05 版本带来了一…

uni-app微信小程序打开第三方地图

需求 小程序中有个按钮点击以后会调用手机中第三方地图进行导航。参数 位置信息 经度 与纬度。 实现方法 uni.openLocation({latitude: Number(地址纬度),longitude: Number(地址经度),name: 地址名称,address: 地址详情,success: function (res) {console.log(打开系统位置地…

每日汇评:通胀数据公布前,欧元复苏失去动力

欧元/美元周一上涨后回落至1.0600&#xff1b; 市场参与者将密切关注欧元区通胀数据&#xff1b; 如果价格跌破1.0580-1.0580区间&#xff0c;卖方可能会采取行动&#xff1b; EUR/USD积聚了多头动能&#xff0c;周一实现了一周以来最高的日内收盘价&#xff0c;超过1.0600。然…

想知道自己转本复习的效果,就试试这些方法吧

在你埋头苦学的时候&#xff0c;你觉得自己复习得怎么样&#xff1f;用下面的方法检测一下吧~ 01做题时间证明掌握程度 做题的快慢可以验证知识掌握和熟练程度。做题速度慢往往是因为对知识不熟悉。 像数学等理科&#xff0c;会对计算和解题速度要求比较高&#xff0c;需要先…

轻量级gif制作工具 GIFfun中文 for mac

GIFfun是一款GIF制作工具&#xff0c;可以帮助用户从照片和视频中创建GIF动画。该软件具有多种功能&#xff0c;例如GIF转视频、视频转GIF、照片转GIF、照片转视频、GIF转JPG、调整GIF大小、PDF转GIF、PDF转JPG、裁剪视频、GIF编辑等。 GIFfun还提供了专业版功能&#xff0c;如…

浅析 TLS(ECDHE)协议的握手流程(图解)

前言 通过 wireshark 抓取 HTTPS 包&#xff0c;理解 TLS 1.2 安全通信协议的握手流程。 重点理解几个点&#xff1a; TLS 握手流程&#xff1a;通过 wireshark 抓取 HTTPS 包理解。协商加密&#xff1a;双方通过 ECDHE 椭圆曲线的密钥交换算法&#xff0c;协商出共享的 会话…

高效管理用户权限:深入探索Spring Security的多用户类型认证、授权和Token刷新

前言 对于spring secutiry 来讲&#xff0c;其默认是只支持一种数据类型进行认证的&#xff0c;因为最后组件的方法仅为&#xff1a;loadUserByUsername(String username) 方法。 如果有多个系统来使用这个认证模块&#xff0c;会导致查询问题。这也就是不支持多用户类型认证…

C# TabControl控件设置多行属性multiline为true后切换页签出现空白

一、问题描述&#xff1a; 最近一直在做C#项目&#xff0c;随着项目的不断扩大&#xff0c;Form窗体中TabControl控件的内容一行已经放不下了&#xff0c;于是乎就设置了属性multiline为true&#xff0c;但是随之而来的就是一个新问题。当切换其他程序窗口返回后&#xff0c;就…

10套地理集图库免费分享

前面为大家分享了《161幅2023版可印刷出版的中国标准地图》&#xff0c;还没领取的朋友请点击查看原文领取&#xff0c;今天整理10套地理图库免费分享给大家&#xff0c;主要包括3D地图、地质动图、中国专题图、世界主要城市地图等一共有433张图。 现在只需关注我们“水经注GIS…