先上简单的html代码

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="./css/init2.css">
<script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="./js/test2.js"></script>
</head>
<body>
<div id="layout">
<header class="clearfix">
<div id="banner">
<ul id="banner_img">
<li class="active"><img src="./img/1.jpg"></li>
<li><img src="./img/2.jpg"></li>
<li><img src="./img/3.jpg"></li>
</ul>
</div>
</header>
</div>
</body>
</html>

在这个html的目录下有三个同级的文件夹,img中放图片,css和js分别存放这个网页的css文件和js文件,这里用到了jquery,记得引入顺序,jquery一定要放在其他js前面。

html代码很简单,不做过多解释。

init2.css

*{
margin: 0px ;
padding: 0px ;
}
#layout{
width: 960px ;
margin: 0 auto ;
}
#banner{
position: relative;
overflow: hidden;
width: auto;
height: 200px;
border-radius: 10px ;
border: 2px solid black;
}
#banner_img li{
float: left;
list-style-type: none;
position: absolute;
left: -100% ;
}
#index{
position: absolute;
right: 8px ;
bottom: 8px ;
}
#index li{
float: left;
width: 16px ;
height: 16px ;
text-align: center;
line-height: 16px ;
border-radius: 5px ;
border:1px solid #FF7300 ;
background: white;
list-style: none;
margin-left: 8px ;
cursor: pointer;
}
.clearfix:after{
content: "" ;
height: 0px ;
display: block;
clear:both ;
}
.on
{
background:#FF7300 ;
}

css基本上和前面的html中的类对应,claerfix来清除浮动,on是代表轮播图片的索引中当前的正播放的图片的索引,主要思路是把图片设置成绝对布局之后全部移动到父元素的一侧,然后再通过jquery动画来改变图片的位置,从而达到轮播的效果。

看一下对于鼠标悬停在图片区域的处理(参考别人的):

        $("#banner").hover(function(){
clearInterval(adTimer);
},function(){
adTimer=setInterval(function(){
//alert(index) ;
showImgs(index);
index++;
if(index==len){
index=0;
}
},2000)
}).trigger('mouseleave');

hover()是一种代替mouseenter和mouseleave的方法,听说比较好用。trigger()来触发当前对象的一个状态,这里要先触发一次mouseleave的状态来初始化计时器,因为这里的设定是当鼠标移到$("#banner")上就销毁定时器,锁定当前图片,移开鼠标就重新添加定时器。

再来看看jquery动画的实现:

function showImgs(index)
{
$(".active").animate({"left": "-100%"},1000);
$(".active").removeClass('active') ;
$("#banner_img li").eq(index).css('left', '100%');
$("#banner_img li").eq(index).animate({"left": "0%"},1000);
$("#index li").removeClass('on').eq(index).addClass('on') ;
$("#banner_img li").eq(index).addClass('active') ;
}

这里的主要思路就是把有class=active的图片,也就是正在显示的图片进行左移,并去掉active类,同时把传进来index的所对应的图片放在父元素右边,然后也左移,这样就造成了一个接一个从右往左移的假象。然后把从右边移过来的图片添加上active类。

我们还需要一个方法来添加图片索引:

function addIndex(n)
{
var ul = $("<ul id=\"index\"></ul>") ;
for(var i=1;i<=n;i++)
{
var li = $("<li></li>") ;
li.append(function(num){
return num
}(i)) ;
ul.append(li) ;
}
ul.children().first().addClass('on') ;
$("#banner").append(ul);
}

基本上就是这样,需要注意图片的宽度要和父元素一样,不然会有无法连续衔接或者部分溢出的问题。

全部js:

init();
function init()
{
$(function(){
var index = 1 ;
var adTime ;
var len = $("#banner_img li").length ;
addIndex(len) ;
$(".active").css('left', '0%');
var bannerLi = $("#index li");
//handle index
$("#index li").mouseover(function() {
index = $("#index li").index(this) ;
jumpImgs(index) ;
index++ ;
if(index==len)
{
index = 0 ;
}
});
//toggleInterval
$("#banner").hover(function(){
clearInterval(adTimer);
},function(){
adTimer=setInterval(function(){
//alert(index) ;
showImgs(index);
index++;
if(index==len){
index=0;
}
},2000)
}).trigger('mouseleave');
});
}
//auto add index
function addIndex(n)
{
var ul = $("<ul id=\"index\"></ul>") ;
for(var i=1;i<=n;i++)
{
var li = $("<li></li>") ;
li.append(function(num){
return num
}(i)) ;
ul.append(li) ;
}
ul.children().first().addClass('on') ;
$("#banner").append(ul);
}
function jumpImgs(index)
{
$(".active").css('left', '-100%');
$(".active").removeClass('active') ;
$("#banner_img li").eq(index).css('left', '0%');
$("#banner_img li").eq(index).addClass('active') ;
}
function showImgs(index)
{
$(".active").animate({"left": "-100%"},1000);
$(".active").removeClass('active') ;
$("#banner_img li").eq(index).css('left', '100%');
$("#banner_img li").eq(index).animate({"left": "0%"},1000);
$("#index li").removeClass('on').eq(index).addClass('on') ;
$("#banner_img li").eq(index).addClass('active') ;
}

最新文章

  1. SpringMVC之controller篇
  2. 常用HTML标签元素结合及简介
  3. 将代码托管到OSChina服务器上
  4. D_S 循环队列的基本操作
  5. hdu4720Naive and Silly Muggles
  6. Note_Master-Detail Application(iOS template)_07_ YJYDetailViewController.m
  7. JQuery_AJAX简单笔记
  8. jquery在不同浏览器获取文件路径出现问题!
  9. TCP/IP,http,socket,长连接,短连接
  10. [算法题] Remove Duplicates from Sorted Array
  11. 20155324《网络对抗》Exp06 信息搜集与漏洞扫描
  12. python requests模拟登陆正方教务管理系统,并爬取成绩
  13. 精简你的 docker 镜像
  14. 精读《C++ primer》学习笔记(第四至六章)
  15. Day036--Python--线程
  16. 如何把手机app的视频下载到手机上?网页上的视频怎么下载?
  17. 【转载】如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
  18. git 使用merge 对本地分支进行合并 并进行代码提交的流程
  19. 20155210 2016-2017-2《Java程序设计》课程总结
  20. 「linux」后台启动nohup经常跟的&gt;/dev/null 2&gt;&amp;1是什么意思

热门文章

  1. jdbc 6.0
  2. scss在ide的命令参数
  3. spring学习12 -Spring 框架模块以及面试常见问题注解等
  4. ping不通的常见原因和解决办法
  5. Arrays.toString 如果传入的是对象 那么调用的是此对象的toString
  6. BZOJ 1226 学校食堂(状压DP)
  7. php获取字符串的编码格式的方法(函数)
  8. P4005 小 Y 和地铁
  9. [AT2064] [agc005_f] Many Easy Problems
  10. day29:关闭服务|