js实现选项卡内容切换以及折叠和展开效果【推荐】
发布时间 - 2026-01-10 22:22:58 点击率:次1.选项卡效果预览
2.源码与简要说明
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>切换选项卡功能实现</title>
<link rel="stylesheet" href="css/switchTab.css" />
</head>
<body>
<div class="nav-tab">
<ul class="main-tab" id="nav-tab">
<li class="active" index="0">
<a href="#none"><p>星期一</p><p>11-07</p></a>
</li>
<li index="1"><a href="#none"><p>星期二</p><p>11-08</p></a></li>
<li index="2"><a href="#none"><p>星期三</p><p>11-09</p></a></li>
<li index="3"><a href="#none"><p>星期四</p><p>11-10</p></a></li>
<li index="4"><a href="#none"><p>星期五</p><p>11-11</p></a></li>
<li index="5"><a href="#none"><p>星期六</p><p>11-12</p></a></li>
<li index="6"><a href="#none"><p>星期日</p><p>11-13</p></a></a></li>
</ul>
</div>
<div class="tab-content">
<div class="table-div" style="display: block;" tab-index="0">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<colgroup>
<col align="left" width="40%"/>
<col align="left" width="30%"/>
<col align="right" width="30%"/>
</colgroup>
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>广东卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>甘肃卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="0">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<colgroup>
<col align="left" width="40%"/>
<col align="left" width="30%"/>
<col align="right" width="30%"/>
</colgroup>
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>广东卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>甘肃卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="0">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<colgroup>
<col align="left" width="40%"/>
<col align="left" width="30%"/>
<col align="right" width="30%"/>
</colgroup>
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>广东卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>甘肃卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>安徽卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr>
<td>广东卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
<tr class="last-no-border">
<td>甘肃卫视</td>
<td>2016/11/07</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="1">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/08</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/08</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="2">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/09</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/09</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="3">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/10</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/10</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="4">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/11</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/11</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="5">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/12</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/12</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="5">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/12</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/12</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="table-div" style="display: none;" tab-index="6">
<table cellpadding="0" cellspacing="0" border="0" class="table">
<thead>
<tr>
<td>播出频道</td>
<td>时间</td>
<td>节目</td>
</tr>
</thead>
<tbody>
<tr>
<td>安徽卫视</td>
<td>2016/11/13</td>
<td>天气预报</td>
</tr>
<tr>
<td>CCTV</td>
<td>2016/11/13</td>
<td>天气预报</td>
</tr>
</tbody>
</table>
</div>
<div class="div-buttn btn-show" button-index="0">
显示全部<i class="c-icon c-icon-bottom"></i>
</div>
<div class="div-buttn btn-collapse" style="display: none;" button-index="0">
折叠<i class="c-icon c-icon-top"></i>
</div>
</div>
<script type="text/javascript" src="./js/lib/jquery-3.1.1.min.js"></script>
<!--时间:2016-11-09 作者:zhangjiangfeng 描述:选项卡jQuery版本实现 -->
<!--<script type="text/javascript" src="js/switchTab-jQuery.js" ></script>
<!--时间:2016-11-12 作者:zhangjiangfeng 描述:选项卡原生js版本实现 -->
<script type="text/javascript" src="js/switchTab-javaScript.js" ></script>
</body>
</html>
switchTab.css 选项卡样式小技巧简要说明
对于选项卡未选中时利用边框透明border-color: rgba(0,0,0,0);;选中后边框顶部颜色border-top-color显示,
这一技巧从而减少其选项卡盒子模型的计算
/**
* Author Zhangjiangfeng
* Date 2016/11/9 PM 20:35 night
* 选项卡样式实现
*/
html {
font-family: "微软雅黑";
font-size: 12px;
}
div, ul, li, p, a {
margin: 0;
padding: 0;
}
.nav-tab {
width: 565px;
height: 54px;
background-color: #fafafa;
position: relative;
display: inline-block;
}
ul.main-tab {
list-style: none;
margin: 0;
padding: 0;
height: 100%;
font-size: 0; /*消除display: inline-block间隙*/
border-bottom: 1px solid #d9d9d9;
margin-bottom: -2px;
}
ul.main-tab li {
display: inline-block;
height: 48px;
padding-top: 4px;
border-width: 2px 1px 0;
border-color: #999;
border-style: solid;
border-color: rgba(0,0,0,0);
_border-color:tomato;
_filter:chroma(color=#ff6347);
}
ul.main-tab li a {
display: inline-block;
height: 100%;
text-decoration: none;
color: #333;
}
ul.main-tab li p {
font-size: 12px;
line-height: 20px;
padding: 0 20px;
}
/*利用边框的透明从而减少li盒子计算样式*/
ul.main-tab li {
border-width: 2px 1px 0;
border-top-color: #19A6A6;
border-left-color: #d9d9d9;
border-right-color: #d9d9d9;
border-style: solid;
border-color: rgba(0,0,0,0);
}
/* ul.main-tab li:hover {
border-width: 2px 1px 0;
border-top-color: #19A6A6;
border-left-color: #d9d9d9;
border-right-color: #d9d9d9;
border-bottom: #FFFFFF;
border-style: solid;
background-color: #FFFFFF;
}*/
/*选项卡选中样式*/
ul.main-tab li.active {
border-width: 2px 1px 0;
border-top-color: #19A6A6;
border-left-color: #d9d9d9;
border-right-color: #d9d9d9;
border-bottom: #FFFFFF;
border-style: solid;
background-color: #FFFFFF;
}
/*选项卡内容样式*/
.tab-content {
width: 543px;
min-height: 250px;
border: 1px solid #d9d9d9;
border-top: none;
padding: 10px;
position: relative;
}
.table {
width: 100%;
display: table;
border-collapse: collapse;
border: 0;
}
.table tr td {
padding: 10px;
border-bottom: solid 1px #d9d9d9;
}
.table tr.last-no-border td {
border-bottom: none;
}
.div-buttn {
width: 100%;
height: 30px;
cursor: pointer;
line-height: 30px;
text-align: center;
background-color: #fafafa;
}
.div-buttn i {
width: 14px;
height: 14px;
margin-left: 5px;
display: inline-block;
vertical-align: text-bottom;
font-style: normal;
}
.div-buttn i.c-icon {
background: url(../img/icons.png) no-repeat 0 0;
}
.div-buttn i.c-icon-bottom {
background-position: -71px -168px;
}
.div-buttn i.c-icon-top {
background-position:-96px -168px
}
.close {
display: none;
}
switchTab-jQuery/switchTab-javaScript思路简要说明
a.切换不同选项卡显示对应内容
b.点击折叠/展开按钮时,操作的是哪一选项卡对应的内容
3.switchTab-jQuery.js动态效果实现
/*选项卡切换功能借助jQuery实现*/
$(function(){
var $navTab = $("#nav-tab"); //选项卡对象
var $tabCont = $(".tab-content"); //选项卡内容
var $tabContList = $tabCont.find(".table-div"); //选项卡内容列表
var $btnShow = $(".btn-show"); //显示全部
var $btnCollapse = $(".btn-collapse"); //折叠
//选项卡事件绑定
$navTab.on("click", "li", function(){
var $that = $(this);
//获取当前索引值
var navIndex = $that.attr("index");
//当前点击li添加active类,同级兄弟节点移除active类
$that.addClass("active").siblings().removeClass("active");
//当当前点击选项卡navIndex值与表格列表索引tabIndex值相等时显示,否则隐藏
$tabContList.each(function(i){
var $that = $(this);
var tabIndex = $that.attr("tab-index"); //表格列表索引
if(navIndex===tabIndex){
$that.show();
}else{
$that.hide();
}
})
//设置显示全部与折叠按钮索引值---标识当前选中选项卡
$btnShow.attr("button-index",navIndex);
$btnCollapse.attr("button-index", navIndex);
});
//显示全部
$btnShow.on("click", function(){
var $that = $(this);
var btnIndex = $that.attr("button-index"); //获取当前按钮的索引值
$that.hide();
$btnCollapse.show();
$tabContList.each(function(i){
var $that = $(this);
var tabIndex = $that.attr("tab-index"); //表格列表索引
if(btnIndex===tabIndex){
$that.show();
}
})
})
//折叠
$btnCollapse.on("click", function(){
var $that = $(this);
var btnIndex = $that.attr("button-index"); //获取当前按钮的索引值
$that.hide();
$btnShow.show();
$tabContList.each(function(i){
var $that = $(this);
var tabIndex = $that.attr("tab-index"); //表格列表索引
if(btnIndex===tabIndex){
$that.hide();
}
})
});
})
3.switchTab-javaScript效果实现
/*选项卡切换功能js实现*/
window.onload = function(){
var oTab = document.getElementById("nav-tab");
var liArray = oTab.getElementsByTagName("li");
var tabList = document.getElementsByClassName("table-div");
var btnShow = document.getElementsByClassName("btn-show");
var btnCollapse = document.getElementsByClassName("btn-collapse");
for (var i=0; i<liArray.length; i++) {
liArray[i].onclick = function(){
for (var j=0; j<liArray.length; j++) {
//移除class样式
liArray[j].className = "";
}
//添加class样式
this.className = "active";
//获取DOM索引值
var index = this.getAttribute("index");
btnShow[0].setAttribute("button-index", index);
btnCollapse[0].setAttribute("button-index", index);
//内容切换
for (var t = 0; t<tabList.length; t++) {
var tableIndex = tabList[t].getAttribute("tab-index");
if(index === tableIndex){
tabList[t].style.display = "block";
}else{
tabList[t].style.display = "none";
}
}
}
}
//显示全部
btnShow[0].onclick = function(){
var btnIndex = this.getAttribute("button-index");
//表格index与按钮btnIndex
for (var t = 0; t<tabList.length; t++) {
var tableIndex = tabList[t].getAttribute("tab-index");
if(btnIndex === tableIndex){
tabList[t].style.display = "block";
}
}
this.style.display = "none";
btnCollapse[0].style.display = "block";
}
//折叠
btnCollapse[0].onclick = function(){
var btnIndex = this.getAttribute("button-index");
//表格index与按钮btnIndex
for (var t = 0; t<tabList.length; t++) {
var tableIndex = tabList[t].getAttribute("tab-index");
if(btnIndex === tableIndex){
tabList[t].style.display = "none";
}
}
this.style.display = "none";
btnShow[0].style.display = "block";
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js
# 选项卡
# 切换
# 折叠
# 展开
# JS+CSS实现的简单折叠展开多级菜单效果
# js实现可折叠展开的手风琴菜单效果
# Js操作树节点自动折叠展开的几种方法
# js实现简单折叠、展开菜单的方法
# js实现超简单的展开、折叠目录代码
# JS实现鼠标滑过折叠与展开菜单效果代码
# JS实现可展开折叠层的鼠标拖曳效果
# JavaScript实现兼容IE6的收起折叠与展开效果实例
# JS实现适合于后台使用的动画折叠菜单效果
# JS实现的简单折叠展开动画效果示例
# 安徽
# 甘肃
# 广东
# 移除
# 的是
# 这一
# 微软
# 绑定
# 小技巧
# 星期日
# border
# tbody
# CCTV
# block
# buttn
# cellspacing
# cellpadding
# left
# width
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel如何生成URL和重定向?(路由助手函数)
如何快速生成可下载的建站源码工具?
Python面向对象测试方法_mock解析【教程】
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Laravel如何使用Service Container和依赖注入?(代码示例)
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
JS去除重复并统计数量的实现方法
如何在IIS中新建站点并配置端口与物理路径?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
Bootstrap整体框架之JavaScript插件架构
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
专业商城网站制作公司有哪些,pi商城官网是哪个?
海南网站制作公司有哪些,海口网是哪家的?
如何在香港免费服务器上快速搭建网站?
如何选择可靠的免备案建站服务器?
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Android滚轮选择时间控件使用详解
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Python制作简易注册登录系统
Laravel distinct去重查询_Laravel Eloquent去重方法
微信推文制作网站有哪些,怎么做微信推文,急?
Linux网络带宽限制_tc配置实践解析【教程】
如何在景安云服务器上绑定域名并配置虚拟主机?
Linux安全能力提升路径_长期防护思维说明【指导】
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
制作公司内部网站有哪些,内网如何建网站?
如何用虚拟主机快速搭建网站?详细步骤解析
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Android仿QQ列表左滑删除操作
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel定时任务怎么设置_Laravel Crontab调度器配置
个人摄影网站制作流程,摄影爱好者都去什么网站?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
如何用IIS7快速搭建并优化网站站点?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Laravel如何处理文件下载请求?(Response示例)
高性价比服务器租赁——企业级配置与24小时运维服务
jQuery中的100个技巧汇总
SQL查询语句优化的实用方法总结
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
javascript日期怎么处理_如何格式化输出

