用vue简单的做一个跑马灯效果

本文介绍如何使用Vue.js创建动态跑马灯效果。通过设置定时器不断将字符串首字符移至末尾,实现文字滚动。代码示例中包含动起来和停下来的按钮控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路是这样的:
一般制作跑马灯,都是设置一个定时器,不断地将字符串中的第一个字符添加到字符串末尾
代码如下:

<div id="app">
	<input type="button" value="动起来" @click = "active">
	<input type="stop" value="停下来" @click = "stop">
	<h4>{{msg}}</h4>
</div>
//记得引入vue库
<script>
var vn = new Vue({
	el : '#app',
	data : {
		msg : '这是一个跑马灯',
		timer = null
	},
	methods : {
		active() {
			if(this.timer !== null) return//防止多次点击动起来的按钮
			this.timer = setInterval(()=>{
				var start = this.msg.substring(0,1)
				var end = this.msg.substring(1)
				this.msg = end + start
			},300)
		},
		stop() {
			clearInterval(this.timer)
			this.timer = null
		}
	}
})
</script>

效果如下:
跑马灯

Vue.js中实现跑马灯效果(轮播图),通常会结合`v-for`指令和`transition`组件。下面是一个简单的例子: ```html <template> <div class="marquee-container"> <ul v-loading="{el: '#loader', color: 'blue'}" :key="index"> <li v-for="(item, index) in items" :key="index" @mouseenter="pauseScroll(index)" @mouseleave="resumeScroll(index)"> {{ item }} </li> </ul> <transition name="fade" mode="out-in"> <div id="loader" class="spinner">加载中...</div> </transition> </div> </template> <script> export default { data() { return { items: ['Item 1', 'Item 2', 'Item 3', 'Item 4'], currentIndex: 0, isPaused: false, }; }, methods: { pauseScroll(index) { this.isPaused = true; if (this.currentIndex === index) { setTimeout(() => { this.next(); }, 500); // 模拟滚动延迟 } }, resumeScroll(index) { this.isPaused = false; }, next() { this.currentIndex++; if (this.currentIndex >= this.items.length) { this.currentIndex = 0; } this.$nextTick(() => { if (!this.isPaused) { this.scroll(); } }); }, scroll() { // 使用JavaScript操作DOM元素实现滚动,这里仅作演示,实际应用中可能会使用第三方库如vue-awesome-swiper const marquee = document.querySelector('.marquee-container'); marquee.scrollTop += marquee.scrollHeight; }, }, mounted() { this.scroll(); // 初始滚动 setInterval(() => { this.next(); }, 2000); }, }; </script> <style scoped> .marquee-container { overflow-y: hidden; height: 100px; /* 根据实际需求调整 */ } li { white-space: nowrap; display: inline-block; } .fade-enter-active, .fade-leave-active { transition: opacity 0.5s ease; } .fade-enter, .fade-leave-to { opacity: 0; } </style> 在这个示例中,当鼠标悬停在某一列表项上时,滚动会被暂停,并在500毫秒后切换到下一个项目。当鼠标离开时,滚动恢复。通过定时器每2秒钟自动滚动一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值