javascript实现tabs选项卡切换效果(自写原生js)


Posted in Javascript onMarch 19, 2013

现在的页面上有许多各种各样的页面效果,常用的有弹出层效果,无缝滚动效果,选项卡切换效果。今天分享一款自己用原生javascript写的选项卡切换效果,由于本人水平有限,如有问题请指出。
效果图如下:
javascript实现tabs选项卡切换效果(自写原生js) 
html代码

<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
<meta charset="UTF-8"> 
<title>js-tabs</title> 
<link rel="stylesheet" type="text/css" href="css/base.css" media="all"/> 
<style type="text/css"> 
a{color:#a0b3d6;} 
.tabs{border:1px solid #a0b3d6;margin:100px;width:300px;} 
.tabs-nav a{background:#eaf0fd;line-height:30px;padding:0 20px;display:inline-block;border-right:1px solid #a0b3d6;border-bottom:1px solid #a0b3d6;float:left;} 
.tabs-nav .on{background:white;border-bottom:1px solid white;_position:relative;} 
.tabs-content{padding:20px;border-top:1px solid #a0b3d6;margin-top:-1px;} 
</style> 
</head> 
<body> 
<div class="tabs" id="tabs"> 
<h2 class="tabs-nav clearfix"> 
<a href="javascript:;" class="on">首页</a> 
<a href="javascript:;">技术</a> 
<a href="javascript:;">生活</a> 
<a href="javascript:;">作品</a> 
</h2> 
<p class="tabs-content">首页首页首页首页首页首页首页首页首页首页</p> 
<p class="tabs-content hide">技术技术技术技术技术技术技术技术技术技术</p> 
<p class="tabs-content hide">生活生活生活生活生活生活生活生活生活生活</p> 
<p class="tabs-content hide">作品作品作品作品作品作品作品作品作品作品</p> 
</div> 
<br/><br/> 
<div class="tabs" id="tabs2"> 
<h2 class="tabs-nav clearfix"> 
<a href="javascript:;" class="on">11111</a> 
<a href="javascript:;">22222</a> 
<a href="javascript:;">33333</a> 
</h2> 
<p class="tabs-content">11111111111111111111111111111111111</p> 
<p class="tabs-content hide">222222222222222222222222222222222222</p> 
<p class="tabs-content hide">333333333333333333333333333333333333333</p> 
</div> 
</body> 
</html> 
<script type="text/javascript" src="tabs.js"></script> 
<script type="text/javascript"> 
window.onload = function(){ 
tabs('tabs','click'); 
tabs('tabs2','mouseover'); 
} 
</script>

其中 base.css 参考我的CSS框架——base.css。
javascript 代码
function tabs(id,trigger){ 
var tabsBtn = document.getElementById(id).getElementsByTagName('h2')[0].getElementsByTagName('a'); 
var tabsContent = document.getElementById(id).getElementsByTagName('p'); 
for(var i = 0,len = tabsBtn.length; i < len; i++){ 
tabsBtn[i].index = i; 
if(trigger == 'click'){ 
tabsBtn[i].onclick = function(){ 
clearClass(); 
this.className = 'on'; 
showContent(this.index); 
} 
}else if(trigger == 'mouseover'){ 
tabsBtn[i].onmouseover = function(){ 
clearClass(); 
this.className = 'on'; 
showContent(this.index); 
} 
} 
} 
function showContent(n){ 
for(var i = 0,len = tabsBtn.length; i < len; i++){ 
tabsContent[i].className = 'hide'; 
} 
tabsContent[n].className = 'tabs-content'; 
} 
function clearClass(){ 
for(var i = 0,len = tabsBtn.length; i < len; i++){ 
tabsBtn[i].className = ''; 
} 
} 
}

注意
1、标题如首页、技术、生活和作品是在 h2 标签中。
2、显示当前标题使用 class 名为 on 的类,如果修改成其他 class 的如 selected,就需要修改 tabs.js 中相对应的内容。
3、标题所对应的内容是在 p 标签中。p 标签中不能再有 p 标签。
PS:这是本人闲着无聊,通过自己所学的 javascript 知识,随意写的一些效果。
Javascript 相关文章推荐
JavaScript 放大镜 放大倍率和视窗尺寸
May 09 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
JavaScript实现简单的二级导航菜单实例
Apr 15 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
每周一练 之 数据结构与算法(Stack)
Apr 16 Javascript
node.js监听文件变化的实现方法
Apr 17 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
jquery写个checkbox——类似邮箱全选功能
Mar 19 #Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 #Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 #Javascript
下载文件个别浏览器文件名乱码解决办法
Mar 19 #Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 #Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 #Javascript
Javascript中valueOf与toString区别浅析
Mar 19 #Javascript
You might like
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
PHP经典面试题集锦
2015/03/19 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Python struct.unpack
2008/09/06 Python
python比较两个列表大小的方法
2015/07/11 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python实现远程控制电脑
2019/05/23 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python读取mysql数据绘制条形图
2020/03/25 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
公司培训心得体会
2014/01/03 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
基层干部十八大感言
2014/01/19 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
《太阳》教学反思
2014/02/21 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
Python爬虫基础讲解之请求
2021/05/13 Python
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android