js 实现 tab 切换

实现如下效果:

1、图片每1秒钟切换1次。

2、当鼠标停留在整个页面上时,图片不进行轮播。

3、当点击切换页的选项上时,出现该选项的对应图片,而且切换页选项的背景颜色发生相应的变化。

4、当图片发生轮播切换时,在不点击选项卡的前提下,相应的选项卡背景颜色也自动发生变化。

效果图如下:

index.html文件

<!DOCTYPE html>
<html>
<head>
<title>js导航轮播</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
<div class="main" id="main">
<div class="nav">
<ul id="ul">
<li id="0">首页</li>
<li id="1">点击看看</li>
<li id="2">会自动的</li>
<li id="3">我的网站</li>
</ul>
</div>
<div class="banner" id="banner">
<a href=""><img src="img/1.jpg" class="banner-slide"/></a>
<a href=""><img src="img/3.jpg" class="banner-slide"/></a>
<a href=""><img src="img/4.jpg" class="banner-slide"/></a>
<a href=""><img src="img/5.jpg" class="banner-slide"/></a>
</div>
</div>
</body>
</html>

style.css文件

*{margin:;padding:;}
/*导航菜单*/
body{font-family: "Microsoft YaHei";}
.main{width:602px;height:263px;margin: 20px auto;overflow: hidden;}
.nav ul{width: 600px;overflow: hidden;border: 1px solid #f3f3f3;border-bottom: #fc0;}
.nav ul li{float: left;list-style: none;width: 150px;text-align: center;background-color: #fff;padding: 5px 0;border-radius: 5px;cursor: pointer;}
.nav ul .active{background-color: #fc0;font-weight: bold;cursor: pointer;}
/*轮播图*/
.banner{width:602px;overflow: hidden;position: relative;}
img{width: 100%;}
img .banner-slide{vertical-align: bottom;position: absolute;display: none;}

script.js文件

//封装一个代替getElementById()的方法
function $(id){
return typeof(id) === "string"?document.getElementById(id):id;
} window.onload=function(){
var index = 0,
timer = null,
titles = $("ul").getElementsByTagName("li"),
pics = $("banner").getElementsByTagName("img"),
len = pics.length;
//初始状态设置
titles[0].className="active";
pics[0].style.display='block'; //封装一个切换的tab函数
function tab(){
//鼠标滑过是清除定时器
$("main").onmouseover=function(){
if(timer) {clearInterval(timer);}
}
//鼠标滑出时继续自动切换
$("main").onmouseout=function(){timer = setInterval(autoPlay,1000);} //遍历li,点击li时跳转到相应页面,并且li样式随之改变
for(var i=0;i<len;i++){
titles[i].id=i;
titles[i].onclick=function(){
clearInterval(timer);
changeOption(this.id);
}
$("main").onmouseout=function(){
timer = setInterval(autoPlay,1000);
}
} if(timer){
clearInterval(timer);
timer=null;
}
//添加定时器,实现每隔一秒自动切换
timer = setInterval(autoPlay,1000); //封装autoPlay自动切换函数
function autoPlay(){
index++;
if(index >= len){
index = 0;
}
changeOption(index);
}
//封装changeOption函数
function changeOption(curIndex){
for (var j=0;j<len;j++) {
titles[j].className='';
pics[j].style.display='none';
}
titles[curIndex].className="active";
pics[curIndex].style.display='block';
index=curIndex;
}
}
tab(); }

最新文章

  1. iOS - NSMutableAttributedString富文本的实现
  2. 【原创】三分钟教你学会MVC框架——基于java web开发(1)
  3. [AngularJS] 入门
  4. 一个很详细的web.xml讲解
  5. crackme1.exe解密过程
  6. C# 日志框架的添加
  7. Prompt isNaN 数组 function DOM window.open/close/location/history
  8. 从网页(WEB)登录SAP
  9. oProfile 学习
  10. VMWare虚拟机网络的三种工作模式
  11. DEBUG技巧-设定合适的日志级别
  12. webpack学习(七)打包压缩图片
  13. ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年01月01日更新
  14. EF Oracle TNS 连接
  15. conts、var 、let的区别
  16. 大规模数据导入和导出(sqlserver)
  17. 注解(annotation)
  18. Explain之key_len长度计算
  19. 在ASP.NET MVC中使用Knockout实践06,自定义验证、异步验证
  20. 【webservice】使用命令wsimport构建WebService客户端

热门文章

  1. Cookie/Session编码
  2. union共用体的对齐
  3. 0x01 译文:Windows桌面应用Win32开发简介
  4. keepalived virtual_router_id 44
  5. 02、Quick Start for Windows phone
  6. maven中配置jdk版本
  7. loadrunner录制成功但脚本内容为空,无任何代码//脚本中包含乱码
  8. oracle 快速批量插入复杂数据的内容
  9. VBA学习笔记(1)----VBA对象属性方法
  10. 一款基于jQuery和HTML5全屏焦点图