• Jquery无缝轮播图的制作


    轮播是html页面中比较常见的一种展现形式,也是基础,把轮播图做好,是排版中比较关键的

    1.首先是轮播的html元素放置;做轮播之前,要有一个初步的认识

    2.每个元素的位置怎样摆放,也是很关键的,这里所说的布局

    3.js轮播的动态展现过程

    做好以上三步,轮播基本上就出来的

    首先 .html代码:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6 
     7     <link rel="stylesheet" href="./css/wufenstyle.css">
     8     <script src="./js/jquery.js"></script>
     9     <script src="./js/wufeng.js"></script>
    10 </head>
    11 <body>
    12     <div class="showbox">
    13         <div class="imgbox">
    14             <img src="./img/porsche-normal5.jpg">
    15             <img src="./img/porsche-normal1.jpg">
    16             <img src="./img/porsche-normal2.jpg">
    17             <img src="./img/porsche-normal3.jpg">
    18             <img src="./img/porsche-normal4.jpg">
    19             <img src="./img/porsche-normal5.jpg">
    20             <img src="./img/porsche-normal1.jpg">
    21         </div>
    22         <div class="pre" >
    23             <span></span>
    24         </div>
    25         <div class="aft" >
    26             <span></span>
    27         </div>
    28         <ul class="odot">
    29             <ul class="lis">
    30                 <li class="active"></li>
    31                 <li class="changtai"></li>
    32                 <li class="changtai"></li>
    33                 <li class="changtai"></li>
    34                 <li class="changtai"></li>
    35             </ul>
    36         </ul>
    37     </div>
    38 </body>
    39 </html>
    View Code

    然后是 .css 页面布局

     1 *{
     2     margin:0;
     3     padding:0;
     4 }
     5 img{
     6      margin:0;
     7      padding:0;
     8 }
     9 li{
    10     list-style-type: none;
    11 }
    12 .active{
    13     background:url('../img/active.png') no-repeat 0 0;
    14 }
    15 .changtai{
    16     background:url('../img/none.png') no-repeat 0 0;
    17 }
    18 div.showbox{
    19     position:relative;
    20     width:100%;
    21     height:800px;
    22     overflow: hidden;
    23 }
    24 div.imgbox{
    25     position:absolute;
    26     width:200000px;
    27     height:100%;
    28     left:0;
    29 }
    30 div.imgbox img{
    31     height:100%;
    32     position: relative;
    33     float:left;
    34 }
    35 div.showbox div.pre{
    36     position: relative;
    37     float:left;
    38     width:60px;
    39     height:100%;
    40 }
    41 div.showbox div.pre span{
    42     position: absolute;
    43     left:0;
    44     right:0;
    45     top:0;
    46     bottom: 0;
    47     margin:auto;
    48     width:40px;
    49     height:60px;
    50     background: url('../img/toleft01.png') no-repeat 0 0;
    51     cursor:pointer;
    52     cursor:hand;
    53 }
    54 div.showbox div.aft{
    55     position: relative;
    56     float:right;
    57     width:60px;
    58     height:100%;
    59 }
    60 div.showbox div.aft span{
    61     position: absolute;
    62     left:0;
    63     right:0;
    64     top:0;
    65     bottom: 0;
    66     margin:auto;
    67     width:40px;
    68     height:60px;
    69     background: url('../img/toright01.png') no-repeat 0 0;
    70     cursor:pointer;
    71     cursor:hand;
    72 }
    73 div.showbox ul.odot{
    74     position: absolute;
    75     width:100%;
    76     height:100px;
    77     bottom: 15px;
    78 }
    79 div.showbox ul.odot ul.lis{
    80     position: absolute;
    81     left:0;
    82     right:0;
    83     top:0;
    84     bottom: 0;
    85     margin:auto;
    86     width:200px;
    87     height:30px;
    88 }
    89 div.showbox ul.odot ul.lis li{
    90     display: inline-block;
    91     width:15px;
    92     height:15px;
    93     margin:5px;
    94     cursor:pointer;
    95     cursor:hand;
    96 }
    View Code

    最后是 .js代码:

     1 $(function(){
     2     var O_showbox = $('div.showbox');
     3     var O_imgbox = $('div.showbox div.imgbox');
     4     var O_imgs = $('div.showbox div.imgbox img');
     5     var O_pre = $('div.showbox div.pre');
     6     var O_aft = $('div.showbox div.aft');
     7     var O_lis = $('div.showbox ul.odot ul.lis li');
     8     var timer = null;
     9     var O_index = 1;
    10     var oshow_width = O_showbox.width();
    11     var O_imgs_len = O_imgs.length;
    12     O_imgs.each(function(){
    13         $(this).css('width',oshow_width+'px');
    14     });
    15     O_imgbox.css('width',oshow_width*O_imgs_len +'px');
    16     
    17     O_imgbox.css('left','-' + oshow_width + 'px');
    18     O_aft.on('click',function(){
    19       O_index++;
    20       var target_left =  -O_index*oshow_width;
    21       O_imgbox.stop(false,true).animate({'left':target_left+'px'},function(){
    22            if(O_index >= O_imgs_len-1){
    23                 O_index=1;
    24                 O_imgbox.css('left','-' + oshow_width + 'px');
    25             };
    26             O_lis.removeClass('active').removeClass('changtai');
    27             O_lis.eq(O_index-1).addClass('active').siblings().addClass('changtai');
    28       });
    29     });
    30    O_pre.on('click',function(){
    31       O_index--;
    32       var target_left =  -O_index*oshow_width;
    33       O_imgbox.stop(false,true).animate({'left':target_left+'px'},function(){
    34            if(O_index <= 0 ){
    35                 O_index=O_imgs_len-2;
    36                 O_imgbox.css('left','-' + oshow_width*O_index + 'px');
    37             };
    38             O_lis.removeClass('active').removeClass('changtai');
    39             O_lis.eq(O_index-1).addClass('active').siblings().addClass('changtai');
    40       });
    41     });
    42     function aoto_play(){
    43         timer = setInterval(function(){
    44             O_aft.click();
    45         },1500)
    46     };
    47     aoto_play();
    48     O_lis.on('click',function(){
    49         var index= $(this).index();
    50         O_index =index + 1;
    51         var target_left =  -O_index*oshow_width;
    52         O_imgbox.stop(false,true).animate({'left':target_left+'px'});
    53         O_lis.removeClass('active').removeClass('changtai');
    54         O_lis.eq(O_index-1).addClass('active').siblings().addClass('changtai');
    55     });
    56     O_showbox.hover(function(){
    57         clearInterval(timer);
    58     },function(){
    59         aoto_play();
    60     });
    61 
    62     // 自适应
    63     var Oz_width = 1903; //初始状态的宽度
    64     var Oz_height = 800; //初始状态的高度
    65     var Oz_ratio = Oz_height/Oz_width ; // 自适应高宽比率
    66    
    67     function zishiying(){
    68        var curwidth =  $(document.body).width() ;
    69         //初始化
    70         // 设定显示divbox的宽为视窗宽度,高度为宽度按比例缩放
    71        O_showbox.width( curwidth+'px');
    72        O_showbox.height(  parseInt(curwidth*Oz_ratio) + 'px' );
    73        //设置图片的高度和宽度
    74        O_imgs.each(function(){
    75          $(this).css('width',oshow_width+'px');
    76          $(this).css('height',parseInt(curwidth*Oz_ratio) + 'px' );
    77        });
    78        // 设定imgbox的高度和宽度
    79        O_imgbox.css('width',curwidth*O_imgs_len +'px');
    80        O_imgbox.css('height',parseInt(curwidth*Oz_ratio) + 'px' );
    81       
    82     }
    83     zishiying();
    84     $(window).resize(function(){
    85         zishiying();
    86         //  window.location.reload();
    87     });
    88 });
    View Code

    以上三个部分完成,轮播就OK了;

    下面对代码进行说明:html和css部分就略过了,说一下js的部分

    1. 首先:获取元素及初始化数据

    2. 写点击事件:点击展示下一页和上一页,这里主要是和索引相关,下一页则索引自加,上一页则索引自减;

    利用animate的移动规则,先移动,然后判断索引;确认是否已经到最后一页,或者第一页

    因为我们做的是无缝轮播,图片放置时第一页和最后一页是重复的,这样做一个判断,并作出相应的处理,使图片移动时,看起来是一种无缝状态

    3. 设定自动播放和小点点击事件,轮播停止和重新开始事件

    4.设定轮播图片的自适应:

    综合:

    基本上可以实现轮播自适应,但是有一个问题,就是在图片轮播进时,改变浏览器的大小时,不太匹配,有时候会把图片显示不全,或者显示第一张图片的一般,另一张图片的一部分;

    如以上第4点,在$(window).resize()事件中加入window.location.reload() 刷新时,显示不全的问题得到解决了,但是刷新时,会出现空白闪动,这给人的体验不太好

    总结一下:除了自适应有问题外,轮播基本上实现了

    自适应的问题暂时还不知道怎样解决,欢迎各位看到后留言,告诉我自适应的方法

    附:后记:11/11 再次测试时:

    把自适应中,var curwidth 改成 oshow_width, 相应的curwidth全部换成oshow_width;(此改变是为了同步,觉得没有必要多设一个参数);

    测试时,轮播图片在窗口改变过程中,还是有显示不全的现象(即只显示一张图片的一部分,另一张图片的另一部分),但是再切换到下一页或者自动轮播到下一页时,恢复正常了;

    末尾也出现空白界面的现象也没有再出现

    ----虽然解决了一些问题,但是还是没有找到问题的根因,疑惑中...............

     效果图如下:

    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    什么是主从复制、读写分离、为什么要使用
    Swift 4.0 + Ipad开发项目中值得注意知识点
    Swift细节记录<一>
    ECMAScript 6复习<一>
    Swift4.0复习访问控制与作用域
    Swift4.0复习操作符方法与操作符的定制
    Swift4.0复习错误处理
    Swift4.0复习扩展
    Swift4.0复习泛型
    TCP的三次握手(建立连接)和四次挥手(关闭连接)
  • 原文地址:https://www.cnblogs.com/huanying2015/p/7806262.html
Copyright © 2020-2023  润新知