JS实现标签页效果(配合css)


Posted in Javascript onApril 03, 2013

实现的效果
JS实现标签页效果(配合css)
如上图所示为制作的标签页,我们想要实现的效果是当鼠标移到某一个标签的时候,在下面的内容区显示对应的内容,并且相应标签的颜色需要改变,如图中所示当前鼠标的位置在“标签1”上,则内容区域显示的内容为“我是内容1”,并且“标签1”的颜色要比“标签2”和“标签3”深一些,同样鼠标移到“标签2”和“标签3”的时候显示“我是内容2”和“我是内容3”。这样的效果是CSS和JS配合实现的。下面我们就来看看具体代码:

首先来看HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>标签页效果</title> 
<link href="../CSS/tab.css" rel="stylesheet" type="text/css" /> 
<script language="JavaScript" type="text/javascript" src="../JS文件/jquery.js"></script> 
<script language="JavaScript" type="text/javascript" src="../JS文件/tab.js"></script> 
</head> 
<body> 
<ul id="tabfirst"> 
<li class="tabin">标签1</li> 
<li>标签2</li> 
<li>标签3</li> 
</ul> 
 <div id="contentnow" class="contentfirst contentin">我是内容1</div> 
<div id="contentnow" class="contentfirst">我是内容2</div> 
<div id="contentnow" class="contentfirst">我是内容3</div> 
</body> 
</html>

JS代码实现思路很简单,首先给每个标签项注册一个mouseover函数,当鼠标移到任何一个标签上的时候都会执行moveover函数体内的代码。函数体代码首先获取当前节点,将原来显示的内容进行隐藏,然后根据传入的节点index把对应于相应标签下的内容显示出来。在代码中我们可以看到除了对HTML中节点样式进行改动外还使用了setTimeout函数,该函数的作用是延迟函数的执行时间,下面代码中的延迟时间为300毫秒,也就是当鼠标移到标签后并不是立即执行而是延迟300毫秒后在执行,如果在300毫秒时间内鼠标移出标签区域则不再执行该代码。
$(document).ready(function(){ 
var timeoutid; 
$("#tabfirst li").each(function(index){ //每一个包装的li的JQuery对象都会执行function中的代码 
//index是当前执行这个function代码的li对应在所有li组成的数组中的索引值 
//有了index的值后,就可以找到当前标签对应的内容区域 
$(this).mouseover(function(){ 
var liNode = $(this); 
timeoutid = setTimeout(function(){ 
//将原来显示的内容进行隐藏 
$("div.contentin").removeClass("contentin"); 
//将原来有tabin属性的标签去掉tabin属性 
$("#tabfirst li.tabin").removeClass("tabin"); 
//将当前标签对应的内容区域显示出来 
$("div.contentfirst").eq(index).addClass("contentin"); 
//$("div.contentfirst:eq(" + index + ")").addClass("contentin"); 
//将当前标签增加tabin属性 
liNode.addClass("tabin"); 
},300); 
}).mouseout(function(){ 
clearTimeout(timeoutid); 
}); 
}); 
});

除了该效果外,我们还可以利用相同的原理给每个标签注册click函数,当点击每个标签的时候在原内容区域可以装载不同的页面或任意页面的一部分,有兴趣的话可以点击这里下载源码。该源码中包含了文中所提到的两种不同函数所实现的不同功能。
Javascript 相关文章推荐
jquery中的$(document).ready()与window.onload的区别
Nov 18 Javascript
js调用css属性写法
Sep 21 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
vue中用动态组件实现选项卡切换效果
Mar 25 Javascript
Express本地测试HTTPS的示例代码
Jun 06 Javascript
js实现延迟加载的几种方法详解
Jan 19 Javascript
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
JS实现下拉框的动态添加(附效果)
Apr 03 #Javascript
js去字符串前后空格5种实现方法及比较
Apr 03 #Javascript
终于解决了IE8不支持数组的indexOf方法
Apr 03 #Javascript
jQuery布局插件UI Layout简介及使用方法
Apr 03 #Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 #Javascript
JS获取浏览器版本及名称实现函数
Apr 02 #Javascript
js 火狐下取本地路径实现思路
Apr 02 #Javascript
You might like
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php发送邮件的问题详解
2015/06/22 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
react基本安装与测试示例
2020/04/27 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
在Python中处理XML的教程
2015/04/29 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
树莓派实现移动拍照
2019/06/22 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Django配置文件代码说明
2019/12/04 Python
详解Python 循环嵌套
2020/07/09 Python
nohup的用法
2012/11/26 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
生产部厂长职位说明书
2014/03/03 职场文书
聘用意向书范本
2014/04/01 职场文书
银行求职信怎么写
2014/05/26 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
教育读书笔记
2015/07/02 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL