使用Vue简单实现跑马灯代码...

本文介绍如何使用Vue.js创建跑马灯文字滚动效果,包括HTML结构、Vue实例的设置及方法实现,如开始和停止滚动功能。

在这里插入图片描述
将字幕简单的跑起来,emmmm(类似大街上那种电子滚动屏效果)…
HTML代码:

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>跑马灯</title>
</head>
<body>
<div id="app">
<button v-on:click="gostart()">开始</button>
<button v-on:click="gostop()">停止</button>
<h3 v-html="info"></h3>

</div>
<script src="../lib/vue.js" type="application/javascript"></script>
<script type="text/javascript">
    var vm=new Vue({
        el: "#app",
        data: {
            info: "晓看天色暮看云,行也思君,坐也思君...",
            lightIntervalID:null
        },
        methods:{
            gostart(){
                console.log("shshhs");
                if(this.lightIntervalID!=null){return;}
                console.log();
                var _this=this;
                this.lightIntervalID=setInterval(function () {
                    _this.info=_this.info.substring(1).concat(_this.info.charAt(0));

                },200);
            },
            gostop(){
                clearInterval(this.lightIntervalID);
                this.lightIntervalID = null;
            }
        }
    })
</script>
</body>
</html>
Vue.js是一个流行的前端JavaScript框架,用于构建用户界面。如果你想在Vue应用中实现一个简单跑马灯(轮播图),可以使用`v-for`指令配合定时器来动态更新内容。以下是一个基础的跑马灯组件示例: ```html <template> <div class="marquee"> <transition-group name="slide" tag="div" v-for="(item, index) in items" :key="index"> <div :style="{ transform: 'translateX(' + (-index * itemWidth) + 'px)' }">{{ item }}</div> </transition-group> </div> </template> <style scoped> .marquee { width: 100%; overflow-x: auto; white-space: nowrap; } .slide-enter-active, .slide-leave-active { transition: all 1s ease-in-out; } .slide-enter, .slide-leave-to { transform: translateX(100%); } </style> <script> export default { data() { return { items: ['Item 1', 'Item 2', 'Item 3'], // 跑马灯的内容数组 itemWidth: 50, // 每个item的宽度 interval: 3000, // 自动滚动间隔时间 (毫秒) direction: 1, // -1 for left to right, 1 for right to left }; }, mounted() { this.startCarousel(); }, methods: { startCarousel() { const self = this; const timerId = setInterval(() => { if (self.items.length > 1) { if (self.direction === 1) { // 向右滚动 self.$refs.slide最后一个元素的索引++ if (self.$refs.slide[0].innerText === self.items[self.items.length - 1]) { self.direction = -1; // 当最右侧的元素显示时,反转方向 } } else { // 向左滚动 self.$refs.slide第一个元素的索引-- if (self.$refs.slide[0].innerText === self.items[0]) { self.direction = 1; // 当最左侧的元素显示时,反转方向 } } self.updateItems(); // 更新当前显示的items } }, self.interval); // 添加清除定时器的事件监听器以便于控制停止 this.$on('carousel-stop', () => clearInterval(timerId)); }, updateItems() { const newItems = this.items.slice(-this.$refs.slide.length); // 取出剩余的items this.items = newItems.concat(this.items.slice(0, -newItems.length)); // 循环数组,实现跑马灯效果 }, }, }; </script> ``` 在这个例子中,我们创建了一个`transition-group`来处理动画效果,并通过改变元素的位置实现跑马灯的效果。`startCarousel`方法会启动自动滚动,而当需要停止跑马灯时,可以在组件外部触发`carousel-stop`事件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值