当前位置: 首页 > news >正文

app开发和网站开发的区别做同行的旅游网站

app开发和网站开发的区别,做同行的旅游网站,网站后台怎么,wordpress在线教育插件Vue3 实现一个折叠面板组件 折叠面板(Accordion)是一种常见的 UI 组件,通常用于展示内容列表,用户可以点击标题展开或折叠内容。 一、需求分析 实现一个 Vue3 的折叠面板组件,具备以下功能: 折叠和展开&…

Vue3 实现一个折叠面板组件

折叠面板(Accordion)是一种常见的 UI 组件,通常用于展示内容列表,用户可以点击标题展开或折叠内容。


一、需求分析

实现一个 Vue3 的折叠面板组件,具备以下功能:

  1. 折叠和展开:点击标题可以展开内容,再次点击可以折叠内容。
  2. 支持多个面板:可以同时展开多个面板。
  3. 支持单个面板展开:可以设置为“手风琴模式”,即每次只能展开一个面板。

二、实现步骤

1. 创建折叠面板组件

src/components 文件夹下创建一个名为 Accordion.vue 的组件。

Accordion.vue
<template><div class="accordion"><divv-for="(item, index) in items":key="index"class="accordion-item"><!-- 标题 --><divclass="accordion-header"@click="togglePanel(index)"><span>{{ item.title }}</span><span>{{ isOpen(index) ? '▲' : '▼' }}</span></div><!-- 内容 --><divv-show="isOpen(index)"class="accordion-content"><p>{{ item.content }}</p></div></div></div>
</template><script>
import { ref } from 'vue';export default {name: 'Accordion',props: {items: {type: Array,required: true,},singleOpen: {type: Boolean,default: false, // 是否为手风琴模式},},setup(props) {// 当前打开的面板索引const openPanels = ref([]);// 切换面板状态const togglePanel = (index) => {if (props.singleOpen) {// 手风琴模式:只允许一个面板打开  openPanels是否包含?包含则清空数组,不包含则加上openPanels.value = openPanels.value.includes(index) ? [] : [index];} else {// 普通模式:允许多个面板同时打开//使用 includes 方法检查索引是否在 openPanels 中,如果在则移除,否则添加。if (openPanels.value.includes(index)) {openPanels.value = openPanels.value.filter((i) => i !== index);} else {openPanels.value.push(index);}}};// 判断面板是否打开const isOpen = (index) => {return openPanels.value.includes(index);};return {togglePanel,isOpen,};},
};
</script><style scoped>
.accordion {border: 1px solid #ccc;border-radius: 5px;overflow: hidden;
}.accordion-item {border-bottom: 1px solid #ddd;
}.accordion-header {display: flex;justify-content: space-between;align-items: center;padding: 10px;background-color: #f5f5f5;cursor: pointer;
}.accordion-header:hover {background-color: #eaeaea;
}.accordion-content {padding: 10px;background-color: #fff;border-top: 1px solid #ddd;
}
</style>

2. 使用组件

src/App.vue 中引入并使用这个组件:

<template><div><h1>Vue3 折叠面板组件</h1><!-- 普通模式:允许多个面板同时打开 --><Accordion :items="accordionItems" /><h2 style="margin-top: 20px;">手风琴模式</h2><!-- 手风琴模式:每次只能打开一个面板 --><Accordion :items="accordionItems" :singleOpen="true" /></div>
</template><script>
import Accordion from './components/Accordion.vue';export default {components: {Accordion,},data() {return {accordionItems: [{ title: '面板 1', content: '这是面板 1 的内容' },{ title: '面板 2', content: '这是面板 2 的内容' },{ title: '面板 3', content: '这是面板 3 的内容' },],};},
};
</script>

三、功能解析

1. 折叠和展开

  • 核心逻辑
    • 使用 openPanels 数组记录当前打开的面板索引。
    • 点击标题时,检查索引是否在 openPanels 中,如果在则移除,否则添加。
  • 手风琴模式
    • 如果 singleOpentrue,每次点击时只允许一个面板打开。

2. 动态内容

  • 支持动态传入数据
    • 使用 props 接收 items 数据,数据格式为数组,每个元素包含 titlecontent

3. 样式和交互

  • 样式
    • 使用 v-show 控制内容的显示和隐藏。
    • 添加鼠标悬停效果,让标题在鼠标经过时有背景变化。
  • 交互
    • 在标题右侧显示箭头图标,指示当前面板的状态(展开或折叠)。

四、效果展示

运行项目后,你会看到两个折叠面板:

  1. 普通模式:允许同时展开多个面板。
  2. 手风琴模式:每次只能展开一个面板。

点击标题可以展开或折叠内容,右侧的箭头会根据状态变化。


五、总结

文章实现了一个简单的 Vue3 折叠面板组件,支持普通模式和手风琴模式。这个组件的核心逻辑非常简单,主要依赖数组操作和条件判断。可以根据自己的需求进一步扩展,比如:

  • 添加动画效果,让展开和折叠更流畅。
  • 支持嵌套面板,实现更复杂的结构。
http://www.dtcms.com/a/407789.html

相关文章:

  • 做网站网站赚怎么买到精准客户的电话
  • 操作系统进程同步与互斥核心知识点复习
  • 网站推广方案中网站图片模板
  • 网站建设好处网络营销渠道
  • 网页模板免费资源整站优化包年
  • 网站图片动态换名一对一专属定制方案
  • 网站建设销售实习建筑网官网查证
  • Express路由设计最佳实践
  • 如何成为一名合格的Java架构师
  • 亚马逊seo是什么意思seo策略分析
  • 网站优化年报告seo整站优化费用
  • 【系统分析师】2025年上半年真题:综合知识-答案及详解(回忆版)
  • 0、计算机硬件 —— 主板
  • 做网站需要的流程东莞网站关键词优化收费
  • 基于 OpenCV Eigenfaces 的人脸识别实战与原理解析
  • 网站开发工程师职责wordpress post 插件
  • 预处理 讲解
  • Redis持久化:RDB和AOF
  • 盛泽做网站的怎么做自己下单的网站
  • Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)
  • dw做网站字体 别人电脑显示怎么用phpcmf做网站
  • 如何用ad做网站免费游戏大全
  • 简简单单搭建一个oss服务
  • 做网站简单需要什么网页美工设计的要点分别是什么
  • SQL SERVER 查看锁表
  • 网站链接视频怎么做兴县做网站的公司
  • 专业的网站制作公司哪家好北京网站制作公司兴田德润在那里
  • 【通信】LNA释义
  • html网页设计 静态网页模板 前端html页面模板
  • 前端路由原理及特点