JavaScript创建标签式组件

我们本篇将实现下面的这个标签式组件
我们本篇将实现下面的这个标签式组件
在这里插入图片描述

● 当然我们首先将我们需要的元素存储到变量中,方便后面使用

const tabs = document.querySelectorAll('.operations__tab'); //获取所有的button
const tabsContainer = document.querySelector('.operations__tab-container'); //获取所有button元素的父元素
const tabsContent = document.querySelectorAll('.operations__content');//获取所有的内容的类

● 接着我们需要通过点击事件来获取我们点击的那个button的信息

tabsContainer.addEventListener('click', function (e) {
  const clicked = e.target.closest('.operations__tab');
});
//利用事件委托机制在DOM中找到最近的具有类名为 'operations__tab' 的祖先元素

● 接着我们通过条件保护来设定,当我们获取的元素为null时候,直接返回不执行后面的代码

if (!clicked) return;

● 接着我们要移除所有的活跃样式,这些活跃样式大家看一下之前的html和css代码

//移除活跃元素
tabs.forEach(t => t.classList.remove('operations__tab--active'));//点击按钮会有一个向上的移动,移除它,不会下一次点击不会重置
tabsContent.forEach(c => c.classList.remove('operations__content--active'));//去除内容元素,只有存在这个class才会被显示,点击之后,之前点击出现过的元素会被移除

● 接下来就是我们点击哪个按钮,就给哪个按钮创建活跃样式

//激活按钮样式
clicked.classList.add('operations__tab--active');

● 接着就是激活内容

//激活内容区域
document
  .querySelector(`.operations__content--${clicked.dataset.tab}`)
  .classList.add('operations__content--active');

注:clicked.dataset.tab是为了获取class中的data数据

在这里插入图片描述

完整代码如下:

//标签式组件
const tabs = document.querySelectorAll('.operations__tab');
const tabsContainer = document.querySelector('.operations__tab-container');
const tabsContent = document.querySelectorAll('.operations__content');

tabsContainer.addEventListener('click', function (e) {
  const clicked = e.target.closest('.operations__tab');

  //条件保护
  if (!clicked) return;

  //移除活跃元素
  tabs.forEach(t => t.classList.remove('operations__tab--active'));
  tabsContent.forEach(c => c.classList.remove('operations__content--active'));

  //激活按钮样式
  clicked.classList.add('operations__tab--active');

  //激活内容区域
  document
    .querySelector(`.operations__content--${clicked.dataset.tab}`)
    .classList.add('operations__content--active');
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS CDK魔法书:点亮博客上云新技能(Python篇)

引言 在数字世界的浩瀚海洋中,信息与数据如同戏剧中的主角,舞动着无形的旋律,构建起信息时代的交响乐。而在这其中,作为一位技术领域的探索者,你的使命便是挥舞着编码的魔杖,创造和守护着这些宝贵的数字灵…

外贸邮件推送有哪些策略?如何提升转化率?

外贸邮件推送的效果怎么优化?邮件推送的技巧有哪些? 外贸邮件推送是一种有效的市场营销策略,可以帮助企业开拓国际市场,增加销售额。然而,成功的外贸邮件推送并不是一蹴而就的,需要精心策划和执行。AokSen…

【RF Transceiver】ADRV9040 THEORY OF OPERATION

工作原理 概述 GENERAL 该 ADRV9040 是一款高度集成的射频收发器,能够针对各种应用进行配置。该器件集成了在单个器件中提供所有发射器、流量接收机和观测接收机功能所需的所有射频、混合信号和数字模块。可编程性使该器件能够适应 TDD 模式下的许多 3G/4G/5G 蜂窝…

“论大数据处理架构及其应用”高分范文,软考高级,系统架构设计师

论文真题 大数据处理架构是专门用于处理和分析巨量复杂数据集的软件架构。它通常包括数据收集、存储、处理、分析和可视化等多个层面,旨在从海量、多样化的数据中提取有价值的信息。Lambda架构是大数据平台里最成熟、最稳定的架构,它是一种将批处理和流…

vue3使用vant4的列表vant-list点击进入详情自动滚动到对应位置,踩坑日记(一天半的踩坑经历)

1.路由添加keepAlive <!-- Vue3缓存组件&#xff0c;写法和Vue2不一样--><router-view v-slot"{ Component }"><keep-alive><component :is"Component" v-if"$route.meta.keepAlive"/></keep-alive><component…

20240626每日AI-----------创建你的第一个文心智能体平台Agent

载体 文心智能体平台Agent 注册 统一使用百度账户登录即可 创建智能体 登录后即可在左边菜单进行点击&#xff0c;创建智能体。 创建官方智能体 编写你的智能体名称等等信息

迅为RK3588开发板支持LVDS信号,标准 HDMI信号,IMIPI信号

性能强--iTOP-3588开发板采用瑞芯微RK3588处理器&#xff0c;是全新一代ALoT高端应用芯片&#xff0c;采用8nm LP制程&#xff0c;搭载八核64位CPU&#xff0c;四核Cortex-A76和四核Cortex-A55架构&#xff0c;主频高达2.4GHZ&#xff0c;8GB内存&#xff0c;32GB EMMC。 四核心…

【C++】关于虚函数的理解

深入探索C虚函数&#xff1a;原理、应用与实例分析 一、虚函数的原理二、虚函数的应用三、代码实例分析四、总结 在C面向对象编程的世界里&#xff0c;虚函数&#xff08;Virtual Function&#xff09;扮演着至关重要的角色。它不仅实现了多态性这一核心特性&#xff0c;还使得…

云层区分神经网络模型——二分类

云层区分神经网络模型——二分类 问奶奶&#xff0c;是什么让他们维护一份感情长达年&#xff0c;奶奶说那个年代什么东西坏了都会想要修&#xff0c;现在什么坏了都想着换。 安装依赖 # 要运行脚本&#xff0c;请先安装以下库&#xff1a;pip install tensorflowpip install …

健康管理系统

摘 要 随着现代社会生活节奏的加快和工作压力的增大&#xff0c;人们对健康管理的需求日益凸显。传统的健康管理方式&#xff0c;如定期体检、手动记录健康数据等&#xff0c;已经无法满足现代人对健康管理的即时性、全面性和个性化需求。因此&#xff0c;开发一款高效、便捷的…

Docker三分钟部署ElasticSearch平替MeiliSearch轻量级搜索引擎

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru (更多精彩内容可进入主页观看) &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 目录 一、 …

Topaz Gigapixel AI图片无损放大软件下载安装,Topaz Gigapixel AI 高精度的图片无损放大

Topaz Gigapixel AI无疑是一款革命性的图片无损放大软件&#xff0c;它在图像处理领域开创了一种全新的可能性。 Topaz Gigapixel AI的核心功能在于能够将图片进行高精度的无损放大。虽然经过软件处理的图片严格意义上并不能算是完全无损&#xff0c;但相较于传统方法&#xf…

一、什么是缓存穿透、缓存击穿、缓存雪崩

1、为啥使用缓存&#xff1f; 在程序内部使用缓存&#xff0c;将经常使用的数据存储在缓存中&#xff0c;可以减少对数据库的频繁访问&#xff0c;从而提高系统的响应速度和性能。缓存可以将数据保存在内存中&#xff0c;读取速度更快&#xff0c;能够大大缩短数据访问的时间&…

uniapp——上传图片获取到file对象而非临时地址——基础积累

最近在看uniapp的代码&#xff0c;遇到一个需求&#xff0c;就是要实现上传图片的功能 uniapp 官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 上传图片有对应的API&#xff1a; uni.chooseImage方法&#xff1a;https://uniapp.dcloud.net.cn/api/media/image.html#choo…

【Python机器学习】分类向量——数字可以编码分类变量

在adult数据集的例子中&#xff0c;分类变量被编码为字符。一方面可能会有拼写错误&#xff0c;但另一方面&#xff0c;它明确的将一个变量标记为分类变量。无论是为了便于存储还是因为数据的手机方式&#xff0c;分类变量通常被编码为整数。 假设adult数据集中的人口普查数据…

windows系统根据端口查询pid并结束进程 netstat taskkill

用管理员权限打开命令指示符,输入命令&#xff1a; 1、查看被占用端口所对应的 PID netstat -aon|findstr “端口号” 2、查看指定PID的进程 tasklist|findstr ”14816” 3、结束进程 taskkill -pid 进程号 -f

秋招突击——6/24——复习{完全背包问题——买书,状态转换机——股票买卖V}——新作{两数相除,LRU缓存实现}

文章目录 引言复习完全背包问题——买书个人实现 状态转换机——股票买卖V个人实现参考实现 新作两数相除个人实现 新作LRU缓存实现个人实现unordered_map相关priority_queue相关 参考实现自己复现 总结 引言 今天知道拼多多挂掉了&#xff0c;难受&#xff0c;那实习就是颗粒无…

4_FOC之Clarke变换原理及推导_1

三相PMSM的数学模型是一个比较复杂且强耦合的多变量系统。为了便于后期控制器设计&#xff0c;必须选择合适的坐标变换对数学模型进行降阶和解耦变换。 1、什么是Clark变换 静止abc轴系与αβ轴系如上图。为满足功率不变约束&#xff0c;在图中设αβ轴系中定子绕组以及转子绕组…

# [0622] Task02 model-free 免模型类 RL 算法的预测和控制 【ε 贪心策略 优化的证明】

easy-rl PDF版本 笔记整理 P3 joyrl 比对 补充 P4 - P5 相关 代码 整理 ——> 有空 另开一页 最新版PDF下载 地址&#xff1a;https://github.com/datawhalechina/easy-rl/releases 国内地址(推荐国内读者使用)&#xff1a; 链接: https://pan.baidu.com/s/1isqQnpVRWbb3yh8…

学好 prompt 让大模型变身撩富婆专家,带你走上人生巅峰

前文 使用大模型的最重要的一步就是编写好的提示词 prompt &#xff0c;但是 prompt 既容易被低估也容易被高估。被低估是因为设计良好的提示词可以显著提升效果。被高估是因为即使是基于提示的应用也需要大量的工程工作才能使其发挥作用。下面我会介绍在编写 prompt 的时候&a…