vue页签

效果:

快来学习:

Vue 3 Composition API 和 script setup 语法

  • Composition API:Vue 3 引入的 Composition API 相比 Vue 2 的 Options API 提供了更灵活的代码组织方式。使用 setup 函数,可以将组件的所有功能和逻辑集中在一起,方便复用。
  • script setup 语法:Vue 3 的 <script setup> 是 Composition API 的简化写法,将 setup 函数的代码直接编写在 <script setup> 中,自动将定义的变量和方法暴露给模板。

响应式状态管理

  • refref 用于定义单一响应式变量,当变量改变时,Vue 会自动更新模板。示例中的 tabCountactiveTabId 使用 ref 定义。
  • reactivereactive 用于定义复杂的数据结构,如对象或数组。示例中的 tabs 使用 reactive 定义,管理页签数据,数组变化时页面会自动更新。

页面渲染和模板指令

  • v-for:Vue 的 v-for 指令用于循环渲染数组的每个元素。这里使用 v-for="tab in tabs" 循环渲染所有页签和内容。
  • 动态类绑定v-bind:class 或简写 :class 用于动态绑定类名,['tab', { active: activeTabId === tab.id }] 实现了激活状态的切换。
  • 事件处理:使用 @click 绑定点击事件,点击时触发相应的激活或关闭操作。Vue 提供的事件修饰符 .stop 可以阻止事件冒泡,防止触发父级元素的点击事件。

事件冒泡与 @click.stop

  • 事件冒泡:HTML 中,点击事件会逐级向上传递到父级元素。这种行为在需要精准触发特定操作时会带来困扰。
  • @click.stop 修饰符:Vue 提供 .stop 修饰符阻止事件冒泡,确保关闭按钮仅触发关闭操作而不会激活页签。

Scoped CSS

  • Scoped 样式<style scoped> 限制样式只作用于当前组件,防止影响其他组件,保证了组件的样式独立性。

代码:

<template><!-- 页签容器 --><div class="tabs-container"><!-- 页签列表 --><div class="tabs"><!-- 使用 v-for 循环渲染每一个页签 --><div v-for="tab in tabs" :key="tab.id" :class="['tab', { active: activeTabId === tab.id }]"@click="activateTab(tab.id)">{{ tab.label }}<!-- 关闭按钮,阻止事件冒泡以防触发 activateTab --><span class="close-btn" @click.stop="closeTab(tab.id)">x</span></div></div><!-- 添加新页签的按钮 --><button style="width: 50px; height: 30px;" @click="addTab">+</button></div><!-- 页签内容容器 --><div class="content-container"><!-- 循环渲染每个页签对应的内容区域 --><div v-for="tab in tabs" :key="tab.id" :class="['tab-content', { active: activeTabId === tab.id }]">{{ tab.content }}</div></div>
</template><script setup>
import { reactive, ref } from 'vue'// 初始化页签计数器,用于给每个新页签分配唯一 ID
let tabCount = ref(0)
// 定义一个响应式数组,用于存储所有的页签信息
const tabs = reactive([])
// 定义当前激活页签的 ID
const activeTabId = ref(null)// 添加新页签的函数
function addTab () {tabCount.value++ // 页签计数加一const newTab = {id: tabCount.value, // 分配唯一 IDlabel: `页签 ${tabCount.value}`, // 页签的标签名称content: `这是页签 ${tabCount.value} 的内容` // 页签的内容}tabs.push(newTab) // 将新页签加入页签数组activateTab(newTab.id) // 激活新添加的页签
}// 激活指定页签的函数
function activateTab (tabId) {activeTabId.value = tabId // 更新当前激活的页签 ID
}// 关闭指定页签的函数
function closeTab (tabId) {// 找到要关闭的页签的索引const index = tabs.findIndex((tab) => tab.id === tabId)if (index !== -1) {tabs.splice(index, 1) // 从数组中移除该页签// 如果关闭的是当前激活的页签if (activeTabId.value === tabId && tabs.length > 0) {activeTabId.value = tabs[0].id // 激活第一个页签} else if (tabs.length === 0) {activeTabId.value = null // 如果没有页签,重置 activeTabId 为 null}}
}
</script><style scoped>
/* 样式 */
.tabs {display: flex;align-items: center;margin-bottom: 10px;
}.tabs-container {display: flex;align-items: center;justify-content: start;
}.tab {position: relative;padding: 10px 20px;margin-right: 5px;background-color: #eee;cursor: pointer;border-radius: 5px;
}.tab.active {background-color: #ddd;/* 激活状态的页签背景色 */
}.close-btn {position: absolute;right: 5px;top: 5px;font-size: 14px;cursor: pointer;color: red;
}.tab-content {display: none;/* 默认隐藏页签内容 */
}.tab-content.active {display: block;/* 仅激活的页签内容显示 */height: 200px;width: 300px;color: #fff;background-color: green;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9284.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

参数高效微调

参数高效微调 参数高效微调简介 对于预训练数据涉及较少的垂直领域&#xff0c;大语言模型需要对这些领域及相应的下游任务进行适配。上下文学习和指令微调是进行下游任务适配的有效途径&#xff0c;但它们在效果或效率上存在缺陷。为弥补这些不足&#xff0c;参数高效微调&am…

第3篇 滑动开关控制LED__ARM汇编语言工程<一>

Q&#xff1a;如何设计实现滑动开关控制LED的ARM汇编程序呢&#xff1f;与Nios II汇编语言有何不同呢&#xff1f; A&#xff1a;基本原理&#xff1a;该应用程序用到DE1-SoC开发板上的10个红色LED、10个滑动开关SW和4个按钮开关。DE1-SoC_Computer system的qsys系统中IP的硬件…

Windows配置hosts文件域名本地解析IP地址,网页打开

在Windows系统中&#xff0c;配置hosts文件可以实现对域名的本地解析&#xff0c;即将特定的域名映射到指定的IP地址。以下是在Windows系统中配置hosts文件的详细步骤&#xff1a; 一、找到hosts文件位置 “C:\Windows\System32\drivers\etc” 二、备份hosts文件并打开 建议…

【主机游戏】艾尔登法环游戏攻略

艾尔登法环&#xff0c;作为一款备受好评但优化问题频发的游戏&#xff0c;就连马斯克都夸过 今天介绍一下这款游戏 https://pan.quark.cn/s/24760186ac0b 角色升级 在《艾尔登法环》中&#xff0c;角色升级需要找到梅琳娜。你可以在关卡前废墟的营地附近&#xff0c;风暴关…

网络原理(应用层)->HTTP

前言 大家好我是小帅&#xff0c;今天我们来了解应用层协议HTTP 文章目录 1. HTTP 请求响应格式&#xff08;重点&#xff09;1.1 HTTP 协议的⼯作过程1.2 HTTP请求格式1. 3HTTP响应格式 2. HTTP 请求 (Request)2.1 使⽤ ping 命令查看域名对应的 IP 地址2.2 URL encode2.3 认识…

JavaScript中执行上下文和执行栈是什么?

一、执行上下文 简单的来说&#xff0c;执行上下文是一种对Javascript代码执行环境的抽象概念&#xff0c;也就是说只要有Javascript代码运行&#xff0c;那么它就一定是运行在执行上下文中 执行上下文的类型分为三种&#xff1a; 全局执行上下文&#xff1a;只有一个&#…

2023上半年下午1,2

问题1不要看图1-1父图&#xff0c;直接看图1-2子图去找 用户就是农户和租户 按数据流输入的词语后面加表字即D的名称&#xff0c;流向D的 信息有包含&#xff0c;子图加了&#xff0c;父图就不平衡了 添加图一般不加实体&#xff0c;加联系&#xff08;菱形&#xff09;&#x…

Linux基础(2)

学习地点&#xff08;泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 (bilibili.com)&#xff09; LInux目录介绍 Linux常见目录及作用 /&#xff1a;操作系统的根路径 /bin&#xff1a;存储二进制可执行目录&#xff0c;普通用户和管理员都可以执行的命令 /etc&#xff1a;…

算法简介:动态规划

动态规划 1. 动态规划2. 案例2.1 旅游行程最优化2.2 最长公共子串 1. 动态规划 背包问题&#xff1a;背包可以容纳的重量是4磅&#xff0c;吉他为1磅&#xff0c;价值1500元&#xff1b;音响为4磅&#xff0c;价值3000元&#xff1b;笔记本电脑为3磅&#xff0c;价值为2000元。…

解释区块链技术的应用场景和优势。

区块链技术的应用场景包括但不限于以下几个方面&#xff1a; 1. 金融领域&#xff1a;区块链技术可以用于跨境支付、智能合约、数字货币和资产管理等方面&#xff0c;提供更安全、快速和可追溯的交易体验。 2. 物联网领域&#xff1a;区块链技术可以为物联网设备提供身份验证…

【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR

近日&#xff0c;阿里云人工智能平台PAI与复旦大学王鹏教授团队合作&#xff0c;在自然语言处理顶级会议EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。文章提出了一个名为 TAPIR 的知…

棱镜七彩参加“融易行”产融对接南京站项目路演活动 展示供应链安全创新成果

近日&#xff0c;江苏省软件强链“融易行”产融对接南京站活动圆满举行&#xff0c;棱镜七彩作为江苏省重点软件企业受邀参加活动&#xff0c;并展示了公司在供应链安全与开源治理方面的创新成就。 本次活动由江苏省工业和信息化厅、南京市工业和信息化局主办&#xff0c;关键软…

5_api_intro_imagerecognition_html2word

HTML 转 Word API 接口 支持网页转 Word&#xff0c;高效转换为 Word&#xff0c;提供永久链接。 1. 产品功能 超高性能转换效率&#xff1b;支持将传递的 HTML 转换为 Word&#xff0c;支持 HTML 中的 CSS 格式在 Word 文档中的呈现&#xff1b;支持传递网站的 URL&#xff0c…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析&#xff0c;特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力&#xff0c;以对象为为驱动的模型&#xff0c;主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…

蓝桥杯 懒洋洋字符串--字符串读入

题目 代码 #include <iostream>using namespace std;int main(){int n;cin>>n;char s[210][4];int ans0;for(int i0;i<n;i){scanf("%s",s[i]);}for(int i0;i<n;i){char as[i][0];char bs[i][1];char cs[i][2];// cout<<a<< <<b…

GS-Blur数据集:首个基于3D场景合成的156,209对多样化真实感模糊图像数据集。

2024-10-31&#xff0c;由韩国首尔国立大学的研究团队创建的GS-Blur数据集&#xff0c;通过3D场景重建和相机视角移动合成了多样化的真实感模糊图像&#xff0c;为图像去模糊领域提供了一个大规模、高覆盖度的新工具&#xff0c;显著提升了去模糊算法在真实世界场景中的泛化能力…

【Python】实战:定义一个圆的类并计算面积和周长

class Circle: # Circle类def __init__(self, r):self._r r # 将半径r赋值给实例属性self._rdef get_area(self): # 计算面积;前后双下划线通常用于特殊方法&#xff0c;而常规方法应使用普通命名pi 3.1415926area pi * self._r * self._rreturn areadef get_perimeter(s…

基于vue框架的的热点推荐个性化新闻系统的设计与实现ka0x6(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,新闻类型,省份,时事新闻,视频新闻 开题报告内容 基于Vue框架的热点推荐个性化新闻系统的设计与实现开题报告 一、项目背景 随着互联网技术的飞速发展和信息量的爆炸式增长&#xff0c;新闻资讯已成为人们日常生活中不可或缺的一…

.NET 10月红队武器库18款工具汇总

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1&#xff0c;项目介绍 爱慈善公益平台&#xff08;love-charity&#xff09;是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气&#xff0c;项目的完整度较高&#xff0c;是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…