作者:语笑嫣然小公主155 | 来源:互联网 | 2022-03-23 02:46
这篇文章主要给大家介绍了关于如何在Vue.js中实现标签页组件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言
标签页组件,即实现选项卡切换,常用于平级内容的收纳与展示。
因为每个标签页的内容是由使用组件的父级控制的,即这部分内容为一个 slot。所以一般的设计方案是,在 slot 中定义多个 div,然后在接到切换消息时,再显示或隐藏相关的 div。这里面就把相关的交互逻辑也编写进来了,我们希望在组件中处理这些交互逻辑,slot 只单纯处理业务逻辑。这可以通过再定义一个 pane 组件来实现,pane 组件嵌在 tabs 组件中。
1 基础版
因为 tabs 组件中的标题是在 pane 组件中定义的,所以在初始化或者动态变化标题时,tabs 组件需要从 pane 组件中获取标题。
html:
火星疑似发现“外星人墓地”?至今无法解释
全美沸腾!湖人队4年1.2亿迎顶级后卫,詹姆斯:有他就能夺冠
阿米尔汗谈中国武侠 想拍印度版《鹿鼎记》
2 关闭属性
我们为 pane 组件新增一个 closable 属性,用于控制该标签是否可关闭。
在子窗口组件的 props 中,新增 closable 属性:
props: {
...
//是否可关闭
closable: {
type: Boolean,
default: false
}
}
在标签页组件中的模板中,新增关闭标签:
...
template: '\
\
\
\
\
{{ item.label }}\
\
\
\
\
\
\
\
',
...
- 这里使用 v-if 指令,根据 closable 的值来判断是否构建 “关闭” 标签。
- 点击事件绑定了 close() 函数,传入标签所在索引以及标签的名称。
在标签页组件中的方法中,新增了 close(),用于执行关闭标签页逻辑:
close: function (index, name) {
//删除对应的标题元素
this.titleList.splice(index, 1);
var tabs = this.getTabs();
var that = this;
//迭代判断并设置点击的标签页是隐藏状态
tabs.forEach(function (tab, index) {
if (index === name) {
return tab.isShow = false;
}
});
}
- 首先在标题数组中删除对应的标题元素,因为 Vue.js 的核心是数据与视图的双向绑定。因此当我们修改数组时, Vue.js 就会检测到数组发生了变化,所以用 v-for 渲染的视图也会同步更新 。
- 接着,隐藏对应的 tab 内容,我们通过传入的 name 与某个 tab 中的 index,逐一比对,如果确定是我们需要关闭的标签页,那么就隐藏其内容。其实这里使用 key 来表达更合适。
新增的样式:
.close{
color: #FF6666;
}
.close::before {
content: "\2716";
}
.close:hover {
color: #990033;
font-weight: bolder;
}
为需要添加关闭标签的 pane ,添加 closable 属性:
火星疑似发现“外星人墓地”?至今无法解释
全美沸腾!湖人队4年1.2亿迎顶级后卫,詹姆斯:有他就能夺冠
阿米尔汗谈中国武侠 想拍印度版《鹿鼎记》
效果:
3 切换动画
我们在切换标签页时,加上滑动动画吧,这很简单,只要在激活的样式中加上 transform 与 transition 样式即可:
.tabs-tab-active {
color: #336699;
border-top: 1px solid #336699;
border-bottom: 1px solid #fff;
transform:translateY(-1px);
transition: transform 0.5s;
}
效果:
我们让标签页标题被点击时,以动画的形式往上移动 1 个像素。是不是很酷呀O(∩_∩)O~
本文示例代码
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
推荐阅读
-
本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ...
[详细]
蜡笔小新 2024-12-26 13:30:37
-
2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ...
[详细]
蜡笔小新 2024-12-26 12:56:20
-
-
本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ...
[详细]
蜡笔小新 2024-12-26 08:37:18
-
本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ...
[详细]
蜡笔小新 2024-12-25 18:30:21
-
本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ...
[详细]
蜡笔小新 2024-12-25 18:10:18
-
本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ...
[详细]
蜡笔小新 2024-12-25 16:29:11
-
本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ...
[详细]
蜡笔小新 2024-12-25 11:31:48
-
Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ...
[详细]
蜡笔小新 2024-12-25 02:13:25
-
Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ...
[详细]
蜡笔小新 2024-12-21 12:39:07
-
本文详细介绍如何通过设置SSH密钥来获取连接GitHub远程仓库的权限,包括生成密钥、添加到GitHub账户以及验证连接等步骤。 ...
[详细]
蜡笔小新 2024-12-19 19:02:13
-
最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ...
[详细]
蜡笔小新 2024-12-19 11:39:56
-
学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ...
[详细]
蜡笔小新 2024-12-26 20:04:36
-
回顾2014年,我经历了多个重要项目和学习阶段,取得了一定的成绩。新的一年即将到来,希望能在更多项目实践中继续成长。 ...
[详细]
蜡笔小新 2024-12-25 11:26:14
-
作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ...
[详细]
蜡笔小新 2024-12-25 11:06:17
-
本文介绍如何使用线段树高效求解排列中的逆序对问题。通过单点增减和区间求和操作,线段树能够快速处理此类问题,并提供了一种替代树状数组的解决方案。 ...
[详细]
蜡笔小新 2024-12-25 10:48:01
-
语笑嫣然小公主155
这个家伙很懒,什么也没留下!