jquery实现简单轮播

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

时间: 2024-10-10 06:26:17

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

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

0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键实现图片切换:下方为要轮播的所有图片的缩略图展示,可直接单击缩略图快速切换图片. PgwSlideshow主要有以下特点: 体验度很好的响应式设计 支持桌面及移动设备 身形矫健,压缩后的文件只有不到4KB 你可以自定义或者直接修改基本的css样式来给你想要的轮播插件美个容 PgwSlideshow核

原生js面向对象实现简单轮播

平时中我习惯用jquery写轮播效果,实现过程不是很难,也很方便,为了加深对js面向对象的理解,我打算用面向对象实现一个简单的轮播,这里采用了字面量的方式实现.为了实现这个过程,我们要自己动手封装一个运动函数animate,在这里我采用的是匀速运动的方式,这种方式可能体验不是很好,后面分析js代码我在详细解释.废话不多说,先上代码.页面布局可以根据自己的习惯来. html代码: <head> <meta charset="UTF-8"> <meta nam

jQuery制作无缝轮播效果

[一]HTML结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery制作无缝轮播器</title> <script type="text/javascript" src="jquery-1.12.4.js"></script> &

jQuery幻灯相册轮播源代码

体验效果:http://hovertree.com/texiao/jquery/ HTML文件代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>jQuery幻灯相册轮播效果- 何问起</title> <meta cha

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

基于jQuery的bxslider轮播器插件 html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=n

jQuery个性化图片轮播效果

购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果 两个区域:   最外层容器区域,如上图红色线框矩形   选项卡区域 两个事件:    鼠标悬浮或鼠标划入mouseover    鼠标离开mouseleave /**大屏广告滚动样式**/ 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF

基于Jquery实现的轮播图

前阵子我用js写了一个轮播图,现在的话换成jQuery来实现,先看看效果图 首先是html结构,如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jquery版图片轮播</title> <link rel="stylesheet" href="css/index.css" /> &l

[Jquery]焦点图轮播效果

$(function(){    var $next=$(".right");    var $prev=$(".left");    var $list_num=$(".list-num a");    var $banner=$(".banner");    var $list_banner=$(".list-banner");    var index=1;    var timer;    var

使用Jquery实现图片轮播效果

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JQuery实现图片轮播</title> <style type="text/css"> *{margin: 0;padding: 0;} #box{width:600px;height:240px;position: relative;} #pic{width:6