js自定义Tab选项卡效果


Posted in Javascript onJune 05, 2017

自定义Tab选项卡,具体内容如下

规范HTML格式

在设计选项卡之前,先规范一下HTML的格式。

<div class="m-tab-container">
  <ul >
    <li class="active"><a href="#pane1">面板1</a></li>
    <li><a href="#pane2" rel="external nofollow" >面板2</a></li>
  </ul>
  <div>
    <div id="pane1" class="active">
      这是面板1
    </div>
    <div id="pane2">
      这是面板2
    </div>
  </div>
</div>

如上述代码所示,这里并没有声明太多类名,只有容器样式类m-tab-Container和激活样式类active两个。其他元素的样式都是通过这两个类一层一层往下找然后进行设置。

设计CSS样式

.m-tab-container{
  display:flex;
}
.m-tab-container>ul, .m-tab-container>div{
  padding:0;
  margin:0;
}
.m-tab-container>ul{
  flex:0;
  min-width:50px;
}
.m-tab-container>div{
  position:relative;
  flex:1;
  border:1px solid #ddd;
  background-color:#fff;
  padding:10px;
  z-index:2;
}
.m-tab-container>ul>li{
  display:block;
  margin:0 0 5px 0;
}
.m-tab-container>ul>li>a{
  position:relative;
  line-height:40px;
  display:block;
  width:100%;
  text-align:center;
  text-decoration:none;
  background-color:#fff;
  border: 1px solid #ddd;
  border-right:0;
  z-index:1;
}
.m-tab-container>ul>li>a,
.m-tab-container>ul>li.active>a:hover,
.m-tab-container>ul>li.active>a:link,
.m-tab-container>ul>li.active>a:visited,
.m-tab-container>ul>li.active>a:active{
  color:#000;
}
.m-tab-container>ul>li.active>a{
  z-index:3;
}
.m-tab-container>div>div{
  display:none;
}
.m-tab-container>div>div.active{
  display:block;
}
.m-tab-container>ul>li.active,
.m-tab-container>ul>li.active>a{
  cursor: default;
}

li里面的a标签display设置成block后,长度超过了li,能够覆盖掉内容面板的边框形成空缺(经过测试,li设置边框之后和内容面板的div边框相距不足1px,也可以使用margin让li和div重叠,然后用li覆盖掉div的边框)。

绑定JS代码

(function($) {
 // 页面加载后的工作
 $("div.m-tab-container li a").on("click", function(e) {
  e.preventDefault();
  // 可以在这里判断被点击的a标签是否已经激活   
  $(".active").removeClass("active");
  $(this).closest("li").addClass("active")
  $($(this).attr("href")).addClass("active");
 })
})(jQuery);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 浮动层菜单收藏
Jan 16 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
jQuery实现的简单提示信息插件
Dec 08 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
原生js实现倒计时--2018
Feb 21 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
jQuery length 和 size()区别总结
Apr 26 jQuery
Vue 使用Props属性实现父子组件的动态传值详解
Nov 13 Javascript
vue项目实现图片上传功能
Dec 23 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 Javascript
纯js实现动态时间显示
Sep 07 #Javascript
深入理解Angular.JS中的Scope继承
Jun 04 #Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 #Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 #Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
Jun 04 #Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 #Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 #Javascript
You might like
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
小学生保护环境倡议书
2014/05/15 职场文书
给校长的建议书100字
2014/05/16 职场文书
服务员岗位职责
2015/02/03 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
使用pandas模块实现数据的标准化操作
2021/05/14 Python
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
Go语言测试库testify使用学习
2022/07/23 Golang