CSS + JS + Vue 实现仿百度 "换一换" 功能

在很多网站,包括百度,都有一个 "换一换" 的功能,让用户能够随机或顺序查看更多内容。以下是一个使用 Vue.js,CSS 和 JavaScript 实现的简单示例。

Vue 组件

假设我们有一个 Switcher.vue 组件:

vue 复制代码
<template>
  <div>
    <div class="content-container">
      <div v-for="item in currentPageData" :key="item.id" class="content-item">
        {{ item.content }}
      </div>
    </div>
    <button @click="switchPage">换一换</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      allData: [], // 存放所有数据
      currentPage: 0, // 当前页数
      itemsPerPage: 8, // 每页显示的条数
    };
  },
  computed: {
    // 计算当前页的数据
    currentPageData() {
      const start = this.currentPage * this.itemsPerPage;
      const end = start + this.itemsPerPage;
      return this.allData.slice(start, end);
    },
    // 计算总页数
    totalPages() {
      return Math.ceil(this.allData.length / this.itemsPerPage);
    },
  },
  methods: {
    // 换页函数
    switchPage() {
      this.currentPage = (this.currentPage + 1) % this.totalPages;
    },
  },
  // 假设我们在这里用一个模拟的 API 来填充 allData
  mounted() {
    this.allData = Array.from({ length: 63 }, (_, i) => ({
      id: i + 1,
      content: `内容${i + 1}`,
    }));
  },
};
</script>

<style scoped>
.content-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.content-item {
  flex-basis: calc(25% - 10px);
  margin: 5px;
  padding: 10px;
  border: 1px solid #ccc;
  text-align: center;
}
</style>

解释

  1. 数据和状态 : 我们有一个 allData 数组来存放所有数据,一个 currentPage 来追踪当前是第几页,以及一个 itemsPerPage 来定义每页有多少条数据。

  2. 计算属性 : 我们用 currentPageData 来计算当前应该显示哪些数据,用 totalPages 来计算总共有多少页。

  3. 换一换功能 : 我们的 switchPage 方法简单地将 currentPage 加1,然后取模 totalPages,这样就能循环显示所有页面。

  4. 样式: 我们用简单的 CSS 来布局,每行显示 4 个内容项。

  5. 初始化 : 在 mounted 生命周期钩子中,我们初始化了模拟数据。在实际应用中,这里通常会是一个 API 调用。

这个组件现在可以实现基础的 "换一换" 功能。你可以根据实际需要进行进一步的定制和优化。希望这个示例能帮助你!

相关推荐
爱学习的程序媛12 分钟前
【Web前端】深入解析JavaScript异步编程
开发语言·前端·javascript·ecmascript·web
梧桐16813 分钟前
马克沁机枪上阵(二):前线开辟—Claude Code 如何用一天打通前端
前端
是上好佳佳佳呀16 分钟前
【前端(一)】HTML 知识梳理:从结构到常用标签
前端·html
楚轩努力变强20 分钟前
2026 年前端进阶:端侧大模型 + WebGPU,从零打造高性能 AI 原生前端应用
前端·typescript·大模型·react·webgpu·ai原生·高性能前端
放下华子我只抽RuiKe523 分钟前
深度学习 - 01 - NLP自然语言处理基础
前端·人工智能·深度学习·神经网络·自然语言处理·矩阵·easyui
酉鬼女又兒1 小时前
零基础入门前端 第十三届蓝桥杯省赛 :水果拼盘 Flex一篇过(可用于备赛蓝桥杯Web应用开发)
前端·css·职场和发展·蓝桥杯·css3
wefly20171 小时前
m3u8live.cn:免安装 HLS 在线播放器,流媒体调试效率神器
开发语言·javascript·python·django·ecmascript·hls.js 原理·m3u8 解析
J_liaty1 小时前
JavaScript 基础知识全解析:从入门到精通
开发语言·javascript
weixin199701080161 小时前
《苏宁商品详情页前端性能优化实战》
前端·性能优化