在游戏或电竞网站中,赛事中心是一个用于展示即将到来、正在进行和已经结束的比赛的区域。以下是一个使用 Vue.js、CSS 和 JavaScript 来实现的 League of Legends (LoL) 赛事中心功能的简单示例。
Vue 组件
创建一个 EventCenter.vue 组件:
<template>
<div>
<h3>LoL 赛事中心</h3>
<button @click="filterEvents('upcoming')">即将到来</button>
<button @click="filterEvents('live')">正在进行</button>
<button @click="filterEvents('past')">已结束</button>
<div v-for="(event, index) in filteredEvents" :key="index" class="event-item">
<h4>{{ event.name }}</h4>
<p>状态:{{ event.status }}</p>
<p>时间:{{ event.time }}</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
filter: 'upcoming', // 默认过滤条件
events: [
{ id: 1, name: '比赛1', status: 'upcoming', time: '2023-10-01' },
{ id: 2, name: '比赛2', status: 'live', time: '2023-09-20' },
{ id: 3, name: '比赛3', status: 'past', time: '2023-09-10' },
// 更多比赛...
],
filteredEvents: [],
};
},
methods: {
filterEvents(status) {
this.filter = status;
this.filteredEvents = this.events.filter((event) => event.status === this.filter);
},
},
mounted() {
this.filterEvents(this.filter); // 初始化
},
};
</script>
<style scoped>
.event-item {
border: 1px solid #ccc;
margin: 10px 0;
padding: 10px;
}
button {
margin: 5px;
}
</style>
解释
-
数据和状态: 我们有一个
filter用于存储当前的过滤条件,一个events数组用于存储所有的赛事,以及一个filteredEvents数组用于存储过滤后的赛事。 -
赛事过滤逻辑: 我们定义了一个
filterEvents方法,该方法会根据传入的状态(即将到来、正在进行、已结束)来过滤赛事。 -
展示赛事: 在模板中,我们用一个
div来展示过滤后的赛事。 -
初始化: 在
mounted生命周期钩子中,我们调用filterEvents方法来初始化filteredEvents。 -
样式: 我们用简单的 CSS 来添加样式,使每个赛事都有一个边框,并设置了适当的边距和填充。
这个组件实现了一个基础的 LoL 赛事中心功能,你可以根据需要进行更多的定制和扩展,比如添加赛事详情页、赛事回顾、实时得分等。希望这个简单的示例能帮助你实现你需要的功能!