使用classList和dataset实现tab切换
显示效果:

代码实现:
<!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切换的更多相关文章
- 微信小程序写tab切换
微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...
- 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab
解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...
- 小程序之 tab切换(选项卡)
好久没有写东西了 今天写一个简单的东西 小程序tab切换 (选项卡功能) .wxml <view class="swiper-tab"> <view < ...
- 小程序的tab切换事件
index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...
- 微信小程序基于swiper组件的tab切换
代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序--问题汇总及详解之tab切换
设置背景颜色就直接在page里设置 page {background-color: rgb(242, 242, 242);} tab切换: navigator 页面链接 传参的格式为url=&q ...
- 微信小程序实现滑动tab切换和点击tab切换并显示相应的数据(附源代码)
这里主要用到了swiper组件和三目运算,直接上代码, 样式只有三个class,简单粗暴,懒的小伙伴们可以直接拿来用,喜欢的点个支持 <view> <view class=" ...
- 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- jQuery的DOM操作实例(1)——选项卡&&Tab切换
一.原生JavaScript编写tab切换 二.jQuery编写tab切换 在用jQuery编写选项卡过程中,重要的事搞清楚 .eq() 和 .index() 的使用方法. .eq()是jQuery遍 ...
随机推荐
- SmartAssembly .net混淆后,无法找到部分类型
两种解决方式: 1,在vs项目引用中,COM 嵌入互操作类型, 全部设为false. 2, 在混淆选项中,排除所有 引有的 外部COM类
- C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题(转载)
一.定时执行主界面控件值 1.利用定时器 Thread t = null; private void InitTSJK() { t = new Thread(new ThreadStart(GetDa ...
- 定义一个共享数据块DB1 在DB1中定义一个数组 用程序 访问数据里面的某一个成员或者地址连续的成员
提纲 : 定义一个共享数据块 DB1 在DB1 中定义数组 用SFC21 实现 实现全部数组元素的赋一样的值 实现 给数组中的某一个元素赋值 实现 对数组中的全部元素赋值 实现将数组中的某个 或者 某 ...
- 关于VMware vSphere Client安装时,.net framework4进度条卡住不动(亲测)
亲测有用的办法 1.点击电脑桌面右下角的"开始"按钮,点击"运行"按钮,在弹出的节目输入框中输入"regedit". 2.在弹出来的&quo ...
- 统计返回的Decimal/long型数据转换问题
mysql数据库在进行统计时候,返回的count()是个long型,sum()返回的是bigDecimal类型,前段需要的是int型故而需要进行转换. <select id="getD ...
- arduino 通过串口接收string,int类型数据
串口接收string类型数据源码如下 String comdata = ""; void setup() { Serial.begin(9600); } void lo ...
- SignalR实现页面实时监控
1.页面截图
- python--txt文件处理
1.打开文件的模式主要有,r.w.a.r+.w+.a+ file = open('test.txt',mode='w',encoding='utf-8') file.write('hello,worl ...
- windows driver 定时器的使用
#include < Ntifs.h> #pragma warning(disable:4995) #pragma comment(lib, "Ntoskrnl.lib" ...
- 【shell】常用shell脚本
1.检查主机存活状态 #!/bin/bash IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2" for IP in $IP_LIST; ...