* index.html

<!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>js + css 实现标签内容切换功能</title>
<link type="text/css" rel="stylesheet" href="./css/style.css" />
</head> <body>
<ul id="list-title">
<li class="list-item list-item-checked">1</li>
<li class="list-item">2</li>
<li class="list-item">3</li>
</ul>
<div id="content-box">
<div class="contents contents-checked">content_1</div>
<div class="contents">content_2</div>
<div class="contents">content_3</div>
</div>
<script type="text/javascript" src="./js/switchTabs.js"></script>
<script>
switchTabs(".list-item", ".contents", "list-item-checked", "contents-checked");
</script>
</body> </html>

  

* css/style.css

#list-title {
height: 60px;
margin: 0;
padding: 0;
list-style-type: none;
} .list-item {
float: left;
width: 100px;
height: 50px;
margin: 2px;
line-height: 50px;
font-size: 28px;
text-align: center;
border: 1px solid #ccc;
cursor: pointer;
} .list-item-checked {
background-color: #70adff;
color: #ffffff;
} #content-box {
position: relative;
clear: both;
margin: 0 2px;
} .contents {
position: absolute;
left: 0;
top: 0;
width: 312px;
height: 300px;
font-size: 32px;
line-height: 300px;
text-align: center;
border: 1px solid #ccc;
z-index: 0;
opacity: 0;
visibility: hidden;
-webkit-transition: all .5s;
-moz-transition: all .5s;
-ms-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
} .contents-checked {
z-index: 1;
opacity: 1;
visibility: visible;
} #content-box > .contents:first-child {
background-color: #c8ff40;
} #content-box > .contents:nth-child(2) {
background-color: #41ff6f;
} #content-box > .contents:nth-child(3) {
background-color: #ff82a0;
}

  

* js/switchTabs.js

/*
* tab:用于触发事件的标签的selector;
* content:内容容器的类名;
* ts:标签为选中状态时的样式;
* cs:内容容器为选中状态时的样式;
* 检查元素的类名列表中是否有指定的类名,如果有则移除,如果没有则添加;
* */
function switchTabs(tab, content, ts, cs) {
var tabs = document.querySelectorAll(tab),
contents = document.querySelectorAll(content),
last = 0; // 上一次选中元素的index tabs.forEach(function (tab, i) {
(function (i) {
tab.onclick = function () {
tabs[last].classList.remove(ts);
contents[last].classList.remove(cs);
last = i; this.classList.add(ts);
contents[i].classList.add(cs);
}
})(i);
}); }

  

最新文章

  1. javascript移动设备Web开发中对touch事件的封装实例
  2. database link远程链接数据库
  3. 当SVN服务器端IP地址发生变化时,客户端重新定位
  4. phpmyadmin任意文件包含漏洞分析(含演示)
  5. poj.2419.Forests (枚举 + set用法)
  6. Scrum Meeting---Seven(2015-11-2)
  7. python-抓取图片
  8. Qualcomm Web Site For Android Development
  9. 一起来开发Android的天气软件(四)——使用Gson解析数据
  10. 鸟书shell 学习笔记(一) shell专注于概念和命令
  11. HttpServletRequest和ServletRequest的区别
  12. Struts2 Handle 404 error page and wrong action
  13. RAC和单节点数据库的区别有哪些?RAC最有用的功能是什么?
  14. UNIX环境高级编程——信号基本概述和signal函数
  15. istio收集Metrics和日志信息
  16. MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行
  17. sql语句的存储过程中的条件处理
  18. Spring Boot中使用EhCache实现缓存支持
  19. python如何与以太坊交互并将区块链信息写入SQLite
  20. Asp.Net Core实现文件上传

热门文章

  1. 【死磕 Java 基础】— 我同事一个 select 分页语句查出来了 3000W 条数据
  2. Linux下MySQL主从复制(Binlog)的部署过程
  3. noip36
  4. HCNP Routing&amp;Switching之OSPF网络类型
  5. 栈编程和函数控制流: 从 continuation 与 CPS 讲到 call/cc 与协程
  6. Android:绘制字符
  7. 工具库用久了,你还会原生操作 Cookie 吗?
  8. Linux centos 安装 maven 3.5.4
  9. eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解
  10. Mac automator bash 自动操作 右键菜单unrar解压 拷贝文件路径到剪贴板 快速删除(rm -rf) 快捷键设置