先上简单的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') ;
}

jquery实现简单轮播的更多相关文章

  1. PgwSlideshow-基于Jquery的图片轮播插件

    0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键 ...

  2. jQuery.YesShow - 图片轮播插件(带图片放大功能)

    jQuery.YesShow - 图片轮播插件(带图片放大功能) 使用简单,原文件只要这样就可以了:<div id="yes">         <ul> ...

  3. jQuery个性化图片轮播效果

    jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...

  4. jquery实现导航图轮播

    版权声明:作者原创,转载请注明出处! 下面的几个栗子是使用jquery实现Banner轮播的效果,直接将代码贴出来,从最初级没有任何优化和封装的写法,一直到最后一个栗子,一步步进行了优化,加大程序的可 ...

  5. 自适应图片宽度的jQuery焦点幻灯轮播代码

    自适应图片宽度的jQuery焦点幻灯轮播代码 注意要1.7.2版本的jq才支持点击后显示点击的图片,不然就是一直顺序播放 演示   XML/HTML Code <div id="sli ...

  6. jQuery补充,基于jQuery的bxslider轮播器插件

    基于jQuery的bxslider轮播器插件 html <!DOCTYPE html> <html lang="zh-cn"> <head> & ...

  7. (转)jquery实现图片轮播

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. jQuery五屏轮播手风琴切换代码

    jQuery五屏轮播手风琴切换代码 在线演示本地下载

  9. JS---案例:简单轮播图

    案例:简单轮播图 div叫盒子,里面包了2个小盒子,一个是inner,一个是square inner的div是放ul,里面有li,a,和图片 square的div里面放span,是轮播图的小点 < ...

随机推荐

  1. java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger tomcat6 启动错误

    用tomcat6启动时,出现下面的错误Java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger; Cau ...

  2. JVM初识、调优

    JVM是按照运行时数据的存储结构来划分内存结构的,JVM在运行java时,将他们划分成几种不同格式的数据,分别存储在不同的区域,这些数据统一称为运行时数据,运行时数据包括java程序本身的数据信息和J ...

  3. @Resource 注解的作用【和 @Autowired 的对比】

    今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @Autowired 效果一样,但也有一定的区别. 两个注解都可以用来注入 bean ,@Res ...

  4. CF816E-Karen and Supermarket

    题目 Description 今天Karen要去买东西. 一共有 \(n\) 件物品,每件物品的价格为\(c_i\),同时每件物品都有一张优惠券,可以对这件物品减价 \(d_i\) . 使用第 \(i ...

  5. bzoj4184shallot

    题意 给出一个初始为空的数字集合,每次添加一个数字/删除一个存在的数字,然后输出选出一些数进行异或能够得到的最大数值.操作次数<=500000,数字大小<2^31 分析 看上去我们只要写一 ...

  6. php获取字符串的编码格式的方法(函数)

    // 检测字符的编码格式 $encode = mb_detect_encoding($string, array('ASCII','UTF-8','GB2312','GBK','BIG5')); ec ...

  7. C++解析(22):父子间的冲突

    0.目录 1.同名覆盖 2.赋值兼容 3.函数重写遇上赋值兼容 4.小结 1.同名覆盖 子类中是否可以定义父类中的同名成员?如果可以,如何区分?如果不可以,为什么? 父子间的冲突: 子类可以定义父类中 ...

  8. [cogs1065]绿豆蛙的归宿

    1065. [Nescafe19] 绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点.到达每一个顶点时,如果有K条离开该点的道路, ...

  9. WlanGetAvailableNetworkList

    原文msdn链接地址:https://docs.microsoft.com/zh-cn/windows/desktop/api/wlanapi/nf-wlanapi-wlangetavailablen ...

  10. HSTS的来龙去脉

    前言 安全经常说“云.管.端”,“管”指的是管道,传输过程中的安全.为了确保信息在网络传输层的安全,现在很多网站都开启了HTTPS,也就是HTTP+TLS,在传输过程中对信息进行加密.HTTPS使用了 ...