jQuery轮播图实例详解

本文实例为大家分享了jQuery轮播图实例的具体代码,供大家参考,具体内容如下

1、html+css+js代码

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <style type="text/css">
  *{
   margin: 0;
   padding: 0;
   text-decoration: none;
  }
  body{
   padding: 20px;
  }
  #container{
   min-width: 1000px;
   /*width: 1300px;*/
   height: 400px;
   overflow: hidden;
   position: relative;
   margin: 0 auto;
  }
  #list{
   /*width: 9100px;*/
   height: 400px;
   position: absolute;
   z-index: 1;
   top:0;
   left: 0;
   overflow: hidden;
  }
  #list img{
   float: left;
   /*width: 1300px;*/
   height: 400px;
  }
  #buttons{
   position: absolute;
   height: 10px;
   width: 100px;
   z-index: 2;
   bottom: 20px;
   left: 660px;
   text-align: center;
  }
  #buttons span{
   cursor: pointer;
   float: left;
   width: 10px;
   height: 10px;
   margin-right: 9px;
   display: inline-block;
   background-image: url(img/_eb1b95e.png);
   background-position: -1079px -687px;

  }
  #buttons .on{
   background-position: -1049px -687px;
  }
  .arrow{
   cursor: pointer;
   display: none;
   width: 36px;
   height: 76px;
   position: absolute;
   z-index: 2;
   top: 180px;
   background-color: rgba(0,0,0,.3);
   color: #fff;
  }
  #container:hover .arrow{
   display: block;
  }
  #prev{
   background: url(img/_eb1b95e.png);
   background-position: -569px -491px;
   left: 20px;
  }
  #next{
   background: url(img/_eb1b95e.png);
   background-position: -513px -491px;
   right: 20px;
  }
 </style>
</head>
<body>
 <div id="container">
  <div id="list" >
   <img src="img/5.jpg" alt="1"/>
   <img src="img/1.jpg" alt="1"/>
   <img src="img/2.jpg" alt="2"/>
   <img src="img/3.jpg" alt="3"/>
   <img src="img/4.jpg" alt="4"/>
   <img src="img/5.jpg" alt="5"/>
   <img src="img/1.jpg" alt="5"/>
  </div>
  <div id="buttons">
   <span index="1" class="on"></span>
   <span index="2"></span>
   <span index="3"></span>
   <span index="4"></span>
   <span index="5"></span>
  </div>
  <a href="javascript:;" id="prev" class="arrow"></a>
  <a href="javascript:;" id="next" class="arrow"></a>
 </div>

<script type="text/javascript" src="js/jquery.1.10.2.js"></script>
<script type="text/javascript">
  var container = $("#container");
  var list = $("#list");
  var listimg = $("#list img");
  var buttons = $("#buttons span");
  var prev = $("#prev");
  var next = $("#next");
  var index = 1;
  var len = 5;
  var num =len+2;
  var interval = 3000;//变换周期
  var timer;
  var clientwidth=document.documentElement.clientWidth;//屏幕的宽度
  var conwidth = parseInt(clientwidth)-100;//显示界面的宽度

 $(function(){

  setwidth();//设置container的宽度以及里面元素list和list中img的宽度

  function animate(offset){
   var left = parseInt(list.css("left"))+offset;

   // list.animate({left:left+'px'},'normal');
   list.animate({left:left+'px'},conwidth,function(){
    //第一位规定产生动画效果的样式,第二位设置速度,第三位是动画函数执行完后执行的函数
    if (left > -conwidth) {//如果是第一个元素还向前移,就让最后一个元素是这个元素
     list.css('left',-conwidth*len);
    }
    if (left < (-conwidth*len)) {//如果是最后一个元素还向后移,就让第一个元素是这个元素
     list.css('left', -conwidth);
    }
   });
  }

  function showbutton(){//通过操作css来将显示的图片代表的下方原点变大,其余变小
   buttons.eq(index-1).addClass('on').siblings().removeClass('on');
  }

  function play(){
   timer = setTimeout(function(){
    next.trigger('click');//trigger()方法触发被选元素的指定事件类型。
    play();
   },interval);
  }
  function stop(){
   clearTimeout(timer);
  }

  next.bind('click',function(){
   if (list.is(':animated')) {
    return;
   }
   if (index == 5) {
    index = 1;
   }
   else{
    index++;
   }
   animate(-conwidth);
   showbutton();
  });

  prev.bind('click',function(){
   if (list.is(':animated')) {
    return;
   }
   if (index == 1) {
    index = 5;
   }
   else{
    index--;
   }
   animate(conwidth);
   showbutton();
  });

  buttons.each(function(){
   $(this).bind('click',function(){
    if (list.is(':animated') || $(this).attr('class')=='on') {
     return;
    }
    var myindex = parseInt($(this).attr('index'));
    var offset = -conwidth*(myindex - index);

    animate(offset);
    index = myindex;
    showbutton();
   })
  });

  container.hover(stop,play);//鼠标悬停时执行stop()函数,移开时执行play()

  play();

 });

  function setwidth(){//设置container的宽度以及里面元素list和list中img的宽度

   container[0].style.width = conwidth +'px' ;
   list[0].style.width = num*conwidth +'px';
   list[0].style.left = '-'+conwidth +'px';
   for (var i = 0; i < listimg.length; i++) {
    listimg[i].style.width = conwidth + 'px';
   }
  }
</script>
</body>
</html>

2、实现思路

轮播图的功能可分为:自动循环播放,点击左边按钮显示前面图片,点击后边显示后面图片,点击下方的小圆点实现跳转播放。

1.自动播放功能:设置一个定时器,每隔一个周期的时间,触发一次点击右边按钮的函数功能。
2.点击左边按钮显示前面图片:首先我们应该了解到轮播图的原理。图解

大盒子是container,小盒子是list,list里面有很多图片,没有间隔的排列在一行,用绝对定位来操纵每次可以看到的图片,也就是定位在container里面的是可见部分。当点击左边的按钮时,前面的图片右移,相当于绝对定位中的left值加一个图片的宽度。

3.点击右边按钮显示后面图片:原理和左边的相同,相当于图片左移,让后面的图片显示出来。
4.点击下方的小圆点实现跳转播放:此时页面是第二个图片,要跳转到第五个,相当于点击了三次右边的按钮,也相当于图片左移三个图片的宽度。

3、需要掌握的知识点:

css:

绝对定位

js+jq:

document.documentElement.clientWidth;
obj.animate();
obj.css();
obj.eq()
obj.addClass();
obj.siblings();
obj.removeClass();
setTimeout();
clearTimeout();
obj.trigger();
obj.attr();
obj.bind();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • jquery实现左右滑动式轮播图

    本文实例为大家分享了jquery左右滑动轮播图的具体代码,供大家参考,具体内容如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="js/jquery-1.10.2.min.js"><

  • 利用jquery写的左右轮播图特效

    最近不是很忙,练习写了一个轮播图效果,虽然效果跟功能上貌似是没问题,但是我认为在许多东西上面都有待改进,在前端这个职位上我还有很远的路要走,当然要学的东西还有很多,这里仅仅对自己最近研究js的一个记录,我相信以后能写出更好的 将jquery框架的链接跟图片替换就可以看到效果了 源代码如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

  • jQuery无缝轮播图代码

    本文实例为大家分享了jQuery无缝轮播图的具体代码,供大家参考,具体内容如下 html 代码 <div class="banner"> <ul class="img"> <li><a href="#"><img src="image/1.jpg"></a></li> <li><a href="#">

  • jquery 实现轮播图详解及实例代码

    轮播图: 接触jquery也有一段时间了,今天刚好利用轮播图来练练手.博文的前面会介绍一个简单用jquery做轮播图的例子,中间会插入一些关于轮播图更多的思考,在后面会用Javascript的方法来写一个轮播图,最后则是关于jquery和Javascript的比较.轮播图的效果可以点击如下链接查看:http://sandbox.runjs.cn/show/t07kscph jquery做轮播图的例子: html部分代码: <!DOCTYPE html> <html> <hea

  • 基于jQuery实现淡入淡出效果轮播图

    用JavaScript做了平滑切换的焦点轮播图之后,用jQuery写了个简单的淡入淡出的轮播图,代码没有做优化,html结构稍微有一些调整,图片部分用ul替换了之前用的div. html结构如下: <div id="container"> <ul class="pic"> <li><a href="javascript:;"><img src="DSC01627.jpg"

  • jQuery按需加载轮播图(web前端性能优化)

    引言 关于幻灯轮播图,想必大家都不陌生,尤其是基于 jQuery 的,插件.代码网上一搜一大堆,但是真正符合自己需求的几乎没有,所以我要打造一个符合自身需求,经得起广大网民考验的 jQuery 轮播图! 思路 为什么说网上其他一些轮播图不符合我的要求?我的需求又是什么呢? 现在网上可以找到的多数幻灯轮播图的 jQuery 插件的作法是,先把图片和链接的 HTML 写好,然后控制隐藏和显示来轮流展示当前的幻灯图片.但是对用户而言,我们始终只是看到当前的一张图片,那其他几张隐藏的图片为什么要事先加载

  • jQuery自适应轮播图插件Swiper用法示例

    本文实例讲述了jQuery自适应轮播图插件Swiper用法.分享给大家供大家参考,具体如下: 运行效果截图如下: 示例代码如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-sca

  • jquery实现左右无缝轮播图

    本文实例为大家分享了jquery无缝轮播图的实现代码,供大家参考,具体内容如下 <title>无缝轮播图</title> <style> *{margin: 0;padding:0; } ul{list-style: none;} .banner{width: 600px;height: 300px;border: 2px solid #ccc;margin: 100px auto;position: relative;overflow: hidden;} .img{p

  • jQuery插件slides实现无缝轮播图特效

    初始化插件: slides是一款基于jQuery无缝轮播图插件,支持图内元素动画,可以自定义动画类型 $(".slideInner").slide({ slideContainer: $('.slideInner a'), effect: 'easeOutCirc',//动画类型 autoRunTime: 5000,//自动轮播时间 slideSpeed: 1000,//速度 nav: true,//是否显示左右导航 autoRun: true,//是否自动滚动 prevBtn: $(

  • JQuery和html+css实现带小圆点和左右按钮的轮播图实例

    是的!你没看错!还是轮播图.这次的JQuery的哟!! CSS代码: /*轮播图 左右按钮 小白点*/ #second_div{ margin-top: 160px; } .img_box{ overflow: hidden; width:100%; height:420px; border:1px solid; position:relative; } .img_box img{ width:100%; position:absolute; } .ul5{ list-style: none;

随机推荐