原生js、jQuery实现选项卡功能

在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js、jQuery如何来写一些基本的选项卡

话不多说,先给各位看一下功能图:

                 

好了,下边开始写代码了:

HTML代码:

<ul>
<li class="click">red</li>
<li>blue</li>
<li>yellow</li>
</ul>
<div class="box">
<div class="show"></div>
<div></div>
<div></div>
</div>

CSS代码:

*{
margin: 0;
padding: 0;
}
ul{
overflow: hidden;
/*注意父级元素塌陷,详情见博客*/
}
ul li{
width: 100px;
height: 30px;
float: left;
border: 1px solid #000;
list-style: none;
border-right: none;
text-align: center;
line-height: 30px;
cursor: pointer;
}
ul li:last-child{
border-right: 1px solid #000000;
}
.box{
position: relative;
}
.box div{
width: 304px;
height: 300px;
position: absolute;
display: none;
}
.box div:first-child{
background-color: red;
}
.box div:nth-child(2){
background-color: blue;
}
.box div:last-child{
background-color: yellow;
}
.box .show{
display: block;
}
.box .hide{
display: none;
}
.click{
background-color: #ccc;
}
基本样式的设置

 

原生JS写法:

 

var liAll = document.querySelectorAll('li');//获取要操作的元素
var divAll = document.querySelectorAll('.box div');//获取被操作的跟随元素
for (var i = 0;i<liAll.length;i  ) { //for循环为每一个元素添加点击事件
liAll[i].index = i;    //作用域的问题,如果for循环使用let声明,则不需要该行代码
liAll[i].onclick = function () { 
for (var j = 0;j<liAll.length;j  ) {
liAll[j].className = "";//将所有被操作的元素的背景色消失
divAll[j].className = "hide";//将所有被操作的元素全部隐藏
        }
this.className = "click";//当前被点击的元素背景色改变
divAll[this.index].className = "show";//将所有被操作的元素跟随显示
    }
}

 

jQuery写法:

引入jQuery文件 网址:https://www.bootcdn.cn/jquery/

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>

 

$("li").each(function  (index , ele) {//each循环遍历。得到所有的li  index代表li的下表,ele元素
$(this).click(function () {//$(this) 表示当前点击的元素
$(this).addClass("click");
$(this).siblings().removeClass("click");
$(".box div:eq(" index ")").css({"display":"block"}); //eq  根据each循环得出index的所引值  取对应的div显示
$(".box div:eq(" index ")").siblings().css({"display":"none"}); //对应的div隐藏
    });
});

 源代码下载地址:https://github.com/Mere-scholar/tab

如果您有看不明白的地方,可以留言,咱们共同交流!

前端知识更新的很快,继续努力吧!


更多专业前端知识,请上 【猿2048】www.mk2048.com

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET core2.0 发布至IIS中

.NET CORE和asp.net 发布时不太一样&#xff0c;ASP.NET Core不再是由IIS工作进程&#xff08;w3wp.exe&#xff09;托管&#xff0c;而是使用自托管Web服务器&#xff08;Kestrel&#xff09;运行&#xff0c;IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Co…

深入了解Java 8日期和时间API

在这篇文章中&#xff0c;我们将更深入地了解通过Java 8获得的新的Date / Time API&#xff08; JSR 310 &#xff09;。 请注意&#xff0c;本文主要由显示新API功能的代码示例驱动。 我认为这些示例是不言自明的&#xff0c;因此我没有花太多时间在它们周围写文本:-) 让我们…

P4047 部落划分

这题太水了吧&#xff0c;不知道怎么蓝的&#xff0c;蒟蒻只写了十五分钟就一次AC了…… 但是挺有意思&#xff0c;就发篇题解吧qwq emmm……最小生成树&#xff08;贪心&#xff09;&#xff0c;就没别的了…… 要明确&#xff1a; 一开始可以把每个点都看成一个部落&#xff…

如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览&#xff0c;点击链接可以全屏预览。https://codepen.io/comehope/pen/ERwpeG可交互视频此视频是可以交互的&#xff0c;你可以随时暂停视频&#xff0c;编辑视频中的代码。请用 chrome, safari, edge 打开观…

java csf_WebService CSF使用详解 | 学步园

一建立service:1)CxfService&#xff1a;WebServicepublicinterfaceCxfService {WebMethodpublicWebResultList getTasksByActor(WebParam(name"actor") String actor);WebMethodpublicvoidcreateAndStartProcessInstance(WebParam(name"processName") Str…

软件工程和项目管理的区别

软件工程的定义&#xff1a; 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件&#xff0c;以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 项目管理的定义&#xff1a; 项目管理是一个管理学分支的学…

如何启动多个WebLogic托管服务器

WebLogic Server文档建议您创建专用的管理服务器&#xff0c;然后分离托管服务器以进行应用程序部署。 在这里&#xff0c;我将向您展示如何在与管理服务器相同的主机中创建一个或多个托管服务器。 我假设您已经安装了WLS&#xff0c;并已创建并正在运行自己的域。 如果您以前…

《机器学习基石》第一周 —— When Can Machine Learn?

&#xff08;注&#xff1a;由于之前进行了吴恩达机器学习课程的学习&#xff0c;其中有部分内容与机器学习基石的内容重叠&#xff0c;所以以下该系列的笔记只记录新的知识&#xff09; 《机器学习基石》课程围绕着下面这四个问题而展开&#xff1a; 主要内容&#xff1a; 一、…

如何用纯 CSS 创作一盘传统蚊香

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览&#xff0c;点击链接可以全屏预览。https://codepen.io/comehope/pen/BVpvMz可交互视频教程此视频是可以交互的&#xff0c;你可以随时暂停视频&#xff0c;编辑视频中的代码。请用 chrome, safari, edge 打…

LeetCode 905. 按奇偶排序数组

LeetCode 905. 按奇偶排序数组 转载于:https://www.cnblogs.com/hglibin/p/10794792.html

java父类序列化_父类的序列化与 Transient 关键字

情境&#xff1a;一个子类实现了 Serializable 接口&#xff0c;它的父类都没有实现 Serializable 接口&#xff0c;序列化该子类对象&#xff0c;然后反序列化后输出父类定义的某变量的数值&#xff0c;该变量数值与序列化时的数值不同。解决&#xff1a;要想将父类对象也序列…

Java:在Runnable中处理RuntimeException

去年年底&#xff0c;我正在运行预定的任务来监视Neo4j集群&#xff0c;而我遇到的问题之一是有时监视会退出。 我最终意识到这是因为RuntimeException被抛出到Runnable方法中&#xff0c;而我没有处理它。 以下代码演示了该问题&#xff1a; import java.util.ArrayList; im…

错误代码: 1231 - Variable 'sql_mode' can't be set to the value of 'NULL'

错误代码&#xff1a; 1231 - Variable sql_mode cant be set to the value of NULL 错误代码&#xff1a; 1231 - Variable sql_mode cant be set to the value of NULL 错误代码&#xff1a; 1231 - Variable sql_mode cant be set to the value of NULL mysql中的提示 删除注…

[Unity3D]Unity3D游戏开发之怪物AI

大家好。欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章&#xff0c;我的博客地址为&#xff1a;http://blog.csdn.net/qinyuanpei。在上一篇文章中&#xff0c;我们基本上实现了一个小地图的功能&#xff0c;今天呢&#xff0c;我们来实现怪物AI&#xff0c;所谓怪物AI…

中国第一批写java的人_中国java开源界最可爱的人们

评论# re: 中国java开源界最可爱的人们2007-12-07 15:29sitinspring如果少一些抒情,多一点实质内容,文章更耐看. 回复 更多评论# re: 中国java开源界最可爱的人们[未登录]2007-12-07 15:49dennis竟然没有满江红&#xff0c;opendoc的意义不用多说了吧 回复 更多评论# re: 中…

如何把握好 transition 和 animation 的时序,创作描边按钮特效

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览&#xff0c;点击链接可以全屏预览。https://codepen.io/comehope/pen/mKdzZM可交互视频教程此视频是可以交互的&#xff0c;你可以随时暂停视频&#xff0c;编辑视频中的代码。请用 chrome, safari, edge 打…

使用PHREAK算法实现Drools 6性能

Drools 6引入了新的惰性匹配算法。 该算法的详细信息已在之前的两个博客中介绍&#xff1a; RIP RETE时间获得PHREAKY 基于PHREAK堆栈的评估和向后链接 第一篇文章讨论了性能以及为什么算法的批处理和惰性方面难以比较。 “性能的最后一点。 通常&#xff0c;使用PHREAK的单…

02Data

1.数据从何而来 2.数据对象和属性类型 数据集合的类型 结构数据的重要特征 数据对象 属性 属性类型 数据属性的类型 离散 vs.连续属性 3.数据的&#xff08;基本&#xff09;统计描述 分布度量 代数度量 整体度量 度量数据的中心趋势 对称/偏斜数据 4.数据可视化 5.数据的相似…

PAT 1131 Subway Map

题目链接&#xff1a; https://pintia.cn/problem-sets/994805342720868352/problems/994805347523346432 思路&#xff1a; 说多了都是泪&#xff0c; Dijstra超时&#xff0c;采用dfs 利用map<pair<int,int>,int>&#xff0c;表示两个点和他们中间的地铁线号 每次…

专访Vue作者尤雨溪:Vue CLI 3.0重构的原因

1、为什么要对 Vue CLI 进行大规模修改&#xff1f; 尤雨溪认为旧版本的 Vue CLI 本质上只是从 GitHub 拉取模版&#xff0c;这种拉模版的方式有几个问题&#xff1a; &#xff08;1&#xff09; 在单个模版里面同时支持太多选项会导致模版本身变得极其复杂和难以维护&#x…