在web上实现弹幕效果

发布时间:2024年01月17日

以下是两种在Web上实现弹幕的方法:

1. 使用Vue.js和CSS实现弹幕:

<template>
? <div class="barrage-container">
? ? <div v-for="barrage in barrages" :key="barrage.id" class="barrage-item" :style="{ top: barrage.top + 'px', animationDuration: barrage.duration + 's' }">
? ? ? {{ barrage.content }}
? ? </div>
? </div>
</template>

<script>
export default {
? data() {
? ? return {
? ? ? barrages: [
? ? ? ? { id: 1, content: '弹幕1', top: 0, duration: 5 },
? ? ? ? { id: 2, content: '弹幕2', top: 30, duration: 8 },
? ? ? ? { id: 3, content: '弹幕3', top: 60, duration: 6 },
? ? ? ? // 更多弹幕...
? ? ? ]
? ? };
? }
};
</script>

<style>
.barrage-container {
? position: relative;
? height: 200px; /* 弹幕容器高度 */
? overflow: hidden;
}

.barrage-item {
? position: absolute;
? white-space: nowrap;
? font-size: 16px;
? color: white;
? animation: moveBarrage linear infinite;
}

@keyframes moveBarrage {
? 0% {
? ? transform: translateX(100%);
? }
? 100% {
? ? transform: translateX(-100%);
? }
}
</style>


2. 使用Vue 3和CSS实现弹幕:

<template>
? <div class="barrage-container">
? ? <div v-for="barrage in barrages" :key="barrage.id" class="barrage-item" :style="{ top: barrage.top + 'px', animationDuration: barrage.duration + 's' }">
? ? ? {{ barrage.content }}
? ? </div>
? </div>
</template>

<script>
import { ref } from 'vue';

export default {
? setup() {
? ? const barrages = ref([
? ? ? { id: 1, content: '弹幕1', top: 0, duration: 5 },
? ? ? { id: 2, content: '弹幕2', top: 30, duration: 8 },
? ? ? { id: 3, content: '弹幕3', top: 60, duration: 6 },
? ? ? // 更多弹幕...
? ? ]);

? ? return {
? ? ? barrages
? ? };
? }
};
</script>

<style>
.barrage-container {
? position: relative;
? height: 200px; /* 弹幕容器高度 */
? overflow: hidden;
}

.barrage-item {
? position: absolute;
? white-space: nowrap;
? font-size: 16px;
? color: white;
? animation: moveBarrage linear infinite;
}

@keyframes moveBarrage {
? 0% {
? ? transform: translateX(100%);
? }
? 100% {
? ? transform: translateX(-100%);
? }
}
</style>

文章来源:https://blog.csdn.net/cyj0919/article/details/135648361
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。