原生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:;
padding:;
}
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
如果您有看不明白的地方,可以留言,咱们共同交流!
前端知识更新的很快,继续努力吧!
原生js、jQuery实现选项卡功能的更多相关文章
- 原生JS实现购物车结算功能代码+zepto版
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 原生js实现tab选项卡里内嵌图片滚动特效代码
<!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...
- 原生js面向对象编程-选项卡(自动轮播)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 原生js实现tab选项卡
1.html部分 <body> <div id="tab"> <div class="tab_menu& ...
- 标签页(tab)切换的原生js,jquery和bootstrap实现
概述 这是我在学习课程Tab选项卡切换效果时做的总结和练手. 原课程中只有原生js实现,jquery和bootstrap实现是我自己补上的. 本节内容 标签页(tab)切换的原生js实现 标签页(ta ...
- 瀑布流的三种实现方式(原生js+jquery+css3)
前言 项目需求要弄个瀑布流的页面,用的是waterfall这个插件,感觉还是可以的,项目赶就没自己的动手写.最近闲来没事,就自己写个.大致思路理清楚,还是挺好实现的... 原生javascript版 ...
- 原生JS实现百度搜索功能
今天呢给大家分享一下自己用原生JS做的一个百度搜索功能,下面上代码: <!DOCTYPE html> <html> <head> <meta charset= ...
- 原生js实现vue组件功能
在如今VUE盛行的情况下,我们一直在惊叹于VUE的组件的功能,却不知道,原生js早就已经支持了这个功能. 最近在公开课学到的,js还有很多很多需要探索学习. 下面是一个简单的例子 <!DOCTY ...
- 原生JS实现滑动验证功能
一般很多网站都有滑动验证的功能,简单滑动验证的原理如下图所示: 主要理解思想就行 图中的代码可能和实际写的有所不同 HTML和CSS也可根据仔细的喜好就行修改 完整代码: <!DOCTYPE h ...
随机推荐
- linux新服务器分区挂载
新买一台服务器,需要自己手动对硬盘进行分区挂载:(这是centos下,其他版本应该也类似) 1.查看没有分区的硬盘:fdisk -l 由图上信息可知,该服务器由三块硬盘 vda.vdb.vdc,其 ...
- MACD 的数学解释
目录 MACD 的数学解释 MACD 的一般定义 引入延迟算子 Taylor 展开 权重分析 共振? MACD 的数学解释 MACD 的一般定义 \[ \begin{align*} DIF & ...
- MySQL中optimize的作用
MySQL执行命令delete语句时,如果包括where条件,并不会真正的把数据从表中删除,而是将数据转换成了碎片,通过下面的命令可以查看表中的碎片数量和索引等信息: mysql > show ...
- spring测试save方法报错
用test类测试service的save方法时,报错如下: 2018-08-24 21:52:13,506 - could not read a hi value com.mysql.jdbc.exc ...
- mongoDB使用小记
1.简介: MongoDB是由c++语言编写的,基于分布式文件存储的开源数据库系统.MongoDB将数据存储为一个文档,数据结构有键-值对,类似于JSON对象. MongoDB其中的一些概念如下: M ...
- Vue.js 的精髓——组件
开篇:Vue.js 的精髓——组件 写在前面 Vue.js,无疑是当下最火热的前端框架 Almost,而 Vue.js 最精髓的,正是它的组件与组件化.写一个 Vue 工程,也就是在写一个个的组件. ...
- Linux I2C驱动程序设计
1. Linux I2C子系统架构 (1)I2C核心(I2C-Core):I2C 总线和I2C 设备驱动的中间枢纽,它提供了I2C 总线驱动和设备驱动的注册.注销方法等 (2)I2C控制器驱动(ada ...
- Spring Boot学习笔记-配置devtools实现热部署
写在前面 Spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. de ...
- Android OpenGL教程-第四课【转】
第四课 旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 我们增加两个变量来控制这两个对象的旋转.这两个变量加在程序的开始处其他变量的后面.它们是浮 ...
- mysql 远程链接问题
问题描述: 从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.x ...