显示效果:

代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>tab切换</title>
<style>
.tab {
width: 400px;
margin: 200px auto;
}
.nav {
width: 100%;
height: 50px;
}
.nav a {
width: 25%;
height: 100%;
float: left;
line-height: 50px;
background: gray;
color: red;
text-align: center;
text-decoration: none;
}
.nav a.now {
background: yellow;
color: red;
}
.content {
width: 100%;
height: 350px;
overflow: hidden;
}
.content section {
width: 100%;
height: 100%;
display: none;
}
.content section.active {
display: block;
}
</style>
</head>
<body>
<div class="tab">
<!-- 导航栏 -->
<nav class="nav">
<a href="javascript:;" data-content="one">新闻1</a>
<a href="javascript:;" data-content="two">新闻2</a>
<a href="javascript:;" data-content="three">新闻3</a>
<a href="javascript:;" data-content="four">新闻4</a>
</nav>
<!-- 内容栏 -->
<div class="content">
<section id="one">
新闻1
</section>
<section id="two">
新闻2
</section>
<section id="three">
新闻3
</section>
<section id="four">
新闻4
</section>
</div>
</div>
<script>
(function(index){
/* 初始化默认选中第一个选项卡 */
/* 得到a标签组成的伪数组 */
var nav = document.querySelector('.nav');
var aList = nav.querySelectorAll('a');
/* 根据索引初始化默认显示的页签和内容 */
var initA = aList[index];
// console.log(initA);
/* 给索引为0的a标签添加now类名 */
initA.classList.add('now');
/* 获取自定义类名的值,即为内容的ID */
var initId = initA.dataset.content;
// console.log(initId);
/* 拼接id,选取对应的内容区域 */
var initCon = document.querySelector('#' + initId);
/* 增加active类名——初始化完成 */
initCon.classList.add('active');
/* 事件委托:点击事件选中相应的选项卡,然后获取这个元素,先删除原来有
类名now的选项卡,和对应内容的active,然后给这个元素添加类
名now,和对应id的内容选项增加类名active */
nav.onclick = function(e) {
/* 获取点击的a标签 */
var currentA = e.target;
/* 获取原来的a标签 */
var oldA = document.querySelector('.now');
var oldC = document.querySelector('.active');
/* 移除原来初始化的类名 */
oldA.classList.remove('now');
oldC.classList.remove('active');
/* 给当前点击的a标签添加now类名 */
currentA.classList.add('now');
/* 获取点击的a标签的自定义类名的值,即为内容的ID */
var nowId = currentA.dataset.content;
/* 拼接id,选取对应的内容区域 */
var nowCon = document.querySelector('#' + nowId);
/* 增加active类名——点击事件完成 */
nowCon.classList.add('active')
}
})(0)
</script>
</body>
</html>

使用classList和dataset实现tab切换的更多相关文章

  1. 微信小程序写tab切换

    微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...

  2. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab

    解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...

  3. 小程序之 tab切换(选项卡)

    好久没有写东西了   今天写一个简单的东西 小程序tab切换 (选项卡功能) .wxml <view class="swiper-tab"> <view < ...

  4. 小程序的tab切换事件

    index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...

  5. 微信小程序基于swiper组件的tab切换

    代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  6. 微信小程序--问题汇总及详解之tab切换

    设置背景颜色就直接在page里设置    page {background-color: rgb(242, 242, 242);} tab切换: navigator 页面链接 传参的格式为url=&q ...

  7. 微信小程序实现滑动tab切换和点击tab切换并显示相应的数据(附源代码)

    这里主要用到了swiper组件和三目运算,直接上代码, 样式只有三个class,简单粗暴,懒的小伙伴们可以直接拿来用,喜欢的点个支持 <view> <view class=" ...

  8. 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  9. jQuery的DOM操作实例(1)——选项卡&&Tab切换

    一.原生JavaScript编写tab切换 二.jQuery编写tab切换 在用jQuery编写选项卡过程中,重要的事搞清楚 .eq() 和 .index() 的使用方法. .eq()是jQuery遍 ...

随机推荐

  1. Docker commit 命令

    docker commit :从容器创建一个新的镜像. 语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提 ...

  2. Word 写论文的一些教训和经验

    参考文献 写正文时就在引用位置添加参考文献的title,写完后,在百度学术或谷歌学术中搜索参考文献获取GB/T 7714的参考格式,在参考文献的章节为文献编号,在引用位置插入交叉引用. 插图 可以先在 ...

  3. Win7安装Oracle Instantclient ODBC驱动 后配置DSN时出错的解决办法 SQORAS32

    安装过程简述 oracle官网下载了 instantclient-odbc-nt--.zip instantclient-basic-nt-.zip 我这是32位版的win7,按照需要下载对应的版本. ...

  4. CAN通讯基本设置

    A节点pelican协议下,扩展帧 单滤波方式 A节点的接收滤波器 ID号 设置为 0x19881205 设置过程 (1) pelican模式设置 设置时钟分频寄存器CDR.7 =1 使SJA1000 ...

  5. java 九数组分数

    九数组分数 1,2,3-9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. public class A { public static vo ...

  6. P1057 数零壹

    P1057 数零壹 转跳点:

  7. OpenMandriva或将放弃32位的支持

    导读 除了Ubuntu计划在其19.10发行版中删除32位包之外,OpenMandriva开发团队也是另一个备受关注的Linux发行版起草计划,以取消对32位包的支持. OpenMandriva计划在 ...

  8. Spring Boot2(004):关于 Build Systems (构建系统)

    Spring Boot Ref 建议使用 maven 或者 gradle 来进行依赖管理和应用构建. 一.Dependency Management(依赖管理) Spring Boot 的每个版本都会 ...

  9. 《TensorFlow实战Google深度学习框架》笔记——TensorFlow入门

    一.Tensorflow计算模型:计算图 计算图是Tensorflow中最基本的一个概念,Tensorflow中的所有计算都被被转化为计算图上的节点. Tensorflow是一个通过计算图的形式来描述 ...

  10. cf 763A. Timofey and a tree

    呵呵呵,直接判断是不是一个点连起来所有的特殊边(连接2不同颜色的点的边) (一开始还想各种各样奇怪的dfs...垃圾) #include<bits/stdc++.h> #define LL ...