zoukankan      html  css  js  c++  java
  • jquery实现左右轮播图

    jquery实现左右无缝轮播图

    最终显示效果:

    HTML代码:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>jquery无缝轮播图片</title>
            <script src="js/jquery-1.11.3.js"></script>
            <script src="js/carousel2.js"></script>
            <link rel="stylesheet" href="css/carousel2.css" />
        </head>
        <body>
            <div class="banner">
                <!--轮播图片-->
                <ul class="img">
                    <li>
                        <a href="#"><img src="img/carousel1.jpg" alt="第1张图片"></a>
                    </li>
                    <li>
                        <a href="#"><img src="img/carousel2.jpg" alt="第2张图片"></a>
                    </li>
                    <li>
                        <a href="#"><img src="img/carousel3.jpg" alt="第3张图片"></a>
                    </li>
                    <li>
                        <a href="#"><img src="img/carousel4.jpg" alt="第4张图片"></a>
                    </li>
                    <li>
                        <a href="#"><img src="img/carousel5.jpg" alt="第5张图片"></a>
                    </li>
                </ul>
                
                <!--追加小圆点的位置-->
                <ul class="num"></ul>
                
                <!--左右按钮-->
                <div class="btn">
                    <span class="prev"><</span>
                    <span class="next">></span>
                </div>
            </div>
        </body>
    </html>

    CSS3代码:

    * {
        margin: 0;
        padding: 0;
    }
    
    .img,.num {
        list-style: none;
    }
    
    .banner {
        width: 1026px;
        height: 496px;
        border: 2px solid #ccc;
        margin: 100px auto;
        position: relative;
        overflow: hidden;
    }
    
    .img {
        position: absolute;
        top: 0;
        left: 0
    }
    
    .img li {
        float: left;
    }
    .num {
        position: absolute;
        bottom: 10px;
        width: 100%;
        text-align: center;
        font-size: 0;
    }
    
    .num li {
        width: 10px;
        height: 10px;
        background: rgba(0, 0, 0, 0.5);
        display: block;
        border-radius: 100%;
        display: inline-block;
        margin: 0 5px;
        cursor: pointer;
    }
    
    .btn {
        display: none;
    }
    
    .btn span {
        display: block;
        width: 50px;
        height: 100px;
        background: rgba(0, 0, 0, 0.6);
        color: #fff;
        font-size: 40px;
        line-height: 100px;
        text-align: center;
        cursor: pointer;
    }
    
    .btn .prev {
        position: absolute;
        left: 0;
        top: 50%;
        margin-top: -50px;
    }
    
    .btn .next {
        position: absolute;
        right: 0;
        top: 50%;
        margin-top: -50px;
    }
    
    .num .active {
        background-color: #fff;
    }

    javaScript代码:

     $(function() {    
        var i = 0;  
        var timer = null;  
        
        //创建圆点
        for(var j = 0; j < $('.img li').length; j++) { 
            $('.num').append('<li></li>')  
        }  
        //给第一个圆点添加样式
        $('.num li').first().addClass('active'); 
            
        //复制第一张图片
        var firstimg = $('.img li').first().clone(); 
          
        //将第一张图片放到最后一张图片后,设置ul的宽度为图片张数*图片宽度
        $('.img').append(firstimg).width($('.img li').length * ($('.img img').width())); 
              
        // 下一个按钮
        $('.next').click(function() {   
            i++;   
            if(i == $('.img li').length) {    
                i = 1; //这里不是i=0
                    
                //保证无缝轮播,设置left值
                $('.img').css({
                    left: 0
                }); 
                   
            };  
             
            // i需要乘以图片像素
            $('.img').stop().animate({
                left: -i * 1026
            }, 300);   
            
            //设置小圆点指示
            if(i == $('.img li').length - 1) {  
                $('.num li').eq(0).addClass('active').siblings().removeClass('active');   
            } 
            else {    
                $('.num li').eq(i).addClass('active').siblings().removeClass('active');   
            }       
        })     
        
           // 上一个按钮
           $('.prev').click(function() {   
            i--;   
            if(i == -1) {    
                i = $('.img li').length - 2;    
                $('.img').css({
                    left: -($('.img li').length - 1) * 1026
                });   
            }   
            $('.img').stop().animate({
                left: -i * 1026
            }, 300);   
            $('.num li').eq(i).addClass('active').siblings().removeClass('active');  
        })     
        
        //设置按钮的显示和隐藏
           $('.banner').hover(function() {   
            $('.btn').show();  
        }, function() {   
            $('.btn').hide();  
        })    
        
        //鼠标划入圆点
           $('.num li').mouseover(function() {   
            var _index = $(this).index();   
            $('.img').stop().animate({
                left: -_index * 1026
            }, 150);   
            $('.num li').eq(_index).addClass('active').siblings().removeClass('active');  
        })     
        
        //定时器自动播放
           timer = setInterval(function() {   
            i++;   
            if(i == $('.img li').length) {    
                i = 1;    
                $('.img').css({
                    left: 0
                });   
            };     
            $('.img').stop().animate({
                left: -i * 1026
            }, 300);   
            if(i == $('.img li').length - 1) {    
                $('.num li').eq(0).addClass('active').siblings().removeClass('active');   
            } else {    
                $('.num li').eq(i).addClass('active').siblings().removeClass('active');   
            }  
        }, 1000)     
        
        //鼠标移入,暂停自动播放,移出,开始自动播放
           $('.banner').hover(function() {   
            clearInterval(timer);  
        }, function() {   
            timer = setInterval(function() {   
                i++;   
                if(i == $('.img li').length) {    
                    i = 1;    
                    $('.img').css({
                        left: 0
                    });   
                };     
                $('.img').stop().animate({
                    left: -i * 1026
                }, 300);   
                if(i == $('.img li').length - 1) {    
                    $('.num li').eq(0).addClass('active').siblings().removeClass('active');   
                } else {    
                    $('.num li').eq(i).addClass('active').siblings().removeClass('active');   
                }  
            }, 2000)  
        })   
    })
  • 相关阅读:
    统计学习方法学习笔记第二章(感知机)
    filebeat句柄占用问题
    小组年终总结的汇总
    使用docker制作zookeeper镜像
    普罗米修斯在k8s上面的部署
    k8s亲和性和反亲和性的理解
    AlertManager 的在k8s集群上面的安装部署使用
    filebeat生产上面镜像制作的流程
    普罗米修斯生产上面的性能优化点
    AlertManger集群的搭建
  • 原文地址:https://www.cnblogs.com/firstflying/p/8567561.html
Copyright © 2011-2022 走看看