继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Jquery的三轮播效果

安卓软件程序开发入门学习
关注TA
已关注
手记 289
粉丝 49
获赞 282

今天研究下Jquery的三轮播效果 写了一个简单的出来 现在还没有用组件封装 我今天这个轮播是向上的 一直向上的 本来是想研究个组件出来 想写两个函数 一个函数是向上滚动 另一个是向左滚动 当我调用第一个函数时候 让他向上 同理 当我调用第二个函数时候 让他向左滚动 但是由于待会想看看电视 现在就没有封装 以后有机会再封装下吧 恩 今天这个Jquery写的效果也是蛮简单的 废话不多说 看看下面效果图:


 这样的效果也是看得很多 其实原理很简单 HTML结构和CSS代码也是非常重要的 因为我是用了 ul li这样的标签写的 而我刚开始没有用display:inline这样的 在IE6 7下是有问题的 很纳闷 然后再仔细看看源码 才发现 少了这个!

下面HTML代码

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">         <title>Untitled Document</title> <style type="text/css"> body,div,ul,li{ margin:0; padding:0;}  .container{ width:400px; height:300px; overflow:hidden; position:relative; margin:50px auto 0;}  .slider{ position:absolute;}  .slider li{ list-style:none; width:400px; height:300px; overflow:hidden; display:inline;}  .slider img{ width:400px; height:300px; overflow:hidden; border:none; display: block;}  .slider li a{ width:400px; height:300px; overflow:hidden; display:block;}  .num{ position:absolute; right:5px; bottom:5px; z-index:100;}  .num li{ float:left; color:#FF7300; height:16px; display:inline; line-height:16px; text-align:center; font-size:12px; font-family:Verdana, Geneva, sans-serif; overflow:hidden; margin:3px 1px; background-color:#fff; border:1px solid #FF7300; cursor:pointer; width:16px;}  .num li.on{ color:#fff; width:21px; height:21px; line-height:21px; font-size:16px; margin:0 1px; border:0; background:#FF7300; font-weight:700;}  </style>     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>           </head>     <body>         <div class="container">             <ul class="slider">                 <li><a href="#" target="_blank"><img  src="images/01.jpg" alt=""/></a></li>                 <li><a href="#" target="_blank"><img  src="images/02.jpg" alt=""/></a></li>                 <li><a href="#" target="_blank"><img  src="images/03.jpg" alt=""/></a></li>                 <li><a href="#" target="_blank"><img  src="images/03.jpg" alt=""/></a></li>             </ul>             <ul class="num">                 <li>1</li>                 <li>2</li>                 <li>3</li>                 <li>4</li>             </ul>         </div>                   <script type="text/javascript" src="JqueryMarquee.js"></script>     </body> </html>

JS代码:

 

/**   * @author tugenhua   * @email tugenhua@126.com   * Jquery三轮播图片效果   */ $(function(){      $(".num li:first").addClass("on");      var len = $(".num li").length,          index = 0,          timer = null;          $(".num li").mouseover(function(){              var index = $(".num li").index(this);              showImg(index);          });          $(".container").hover(function(){              clearInterval(timer);          },function(){              timer = setInterval(function(){                  showImg(index);                  index++;                  if(index==len) index=0;              },3000);          }).trigger("mouseleave");  })  function showImg(index){      var addHeight = $(".container").height();      $(".slider").stop(true,false).animate({top : -addHeight*index},1000);      $(".num li").removeClass("on")      .eq(index).addClass("on");        }

首先写这个结构时候 要注意下面几个问题:

1 用了ul li时候 一定要记得用display:inline这个

2 我在写样式时用了个技巧  就是让滚动的图片的外框也就是父级元素 给他个绝对定位,目的是让所有的图片重叠在一起 这样就可以实现一张一张的轮播。

3 当然给了一个当前的类 当播放到那个li时候 让他变宽!文字变色等等!!

4 js 就是说窗口一打开时候 让他当前播放在第一个 所以用了这句代码:$(".num li:first").addClass("on"); 然后获取当前的数字 1 2 3 4的数量 定义当前的索引index 当我鼠标移到任何一个li时候 我想获取当前的索引 用这个 showImg(index) 调用外面的函数 在这个函数内 首先要知道这个图片的外框的高度 接着就让他动画 高度×当前的索引!

5.当我鼠标停在那一整块的时候 我想让他正在播放停下来,当我鼠标移开那一块的时候 让它触发一个离开事件,判断如果当前的index大于或者等于数字的最大长度时候 让index返回第一张图!

下面添加个附件 不明白的地方 可以下载看看 看看代码 看看效果 理解下 就明白了 兼容IE6 7 8 火狐 谷歌等待主流游览器!!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP