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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
单击某一段文字改写文本颜色
Jun 06 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
js实现网页抽奖实例
Aug 05 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
js实现前端分页页码管理
Jan 06 Javascript
Ionic + Angular.js实现图片轮播的方法示例
May 21 Javascript
JavaScript实现的联动菜单特效示例
Jul 08 Javascript
JS获取动态添加元素的方法详解
Jul 31 Javascript
vue+element导航栏高亮显示的解决方式
Nov 12 Javascript
记录一次websocket封装的过程
Nov 23 Javascript
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
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
自定义jQuery选项卡插件实例
2013/03/27 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
Python 文件操作的详解及实例
2017/09/18 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
安全生产责任书
2014/03/12 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
骨干教师培训方案
2014/05/06 职场文书
储备店长岗位职责
2015/04/14 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
Elasticsearch 数据类型及管理
2022/04/19 Python