jQuery实现图片轮播(淡入淡出效果)

实现思路:用一个容器把图片都放进去,容器的overflow为hidden,设一个定时器,每间隔一段时间就将其中一张图片的display设为block,其他的都为none。
话不多说,直接上代码
1.首先用html搭好基本框架


<html>
    <head>
        <meta charset="utf-8" />
        <title>title>
    head>
    <body>
        <div id="wrapper">
            <div id="banner">
                <ul class="imgList">
                    <li><a href="#"><img src="img/01.jpg" /> a>li>
                    <li><a href="#"><img src="img/02.jpg" /> a>li>
                    <li><a href="#"><img src="img/03.jpg" /> a>li>
                    <li><a href="#"><img src="img/04.jpg" /> a>li>
                    <li><a href="#"><img src="img/05.jpg" /> a>li>
                ul>
                <span id="prev">>
                <span id="next">>span>
                <ul class="infoList">
                    <li class="infoOn">1/5li>
                    <li>2/5li>
                    <li>3/5li>
                    <li>4/5li>
                    <li>5/5li>
                ul>
            div>
            <ul class="indexList">
                <li class="active"><span class="indexOn">迪桑娜VIP大牌日span>li>
                <li><span>年终回馈日 会员特价权span>li>
                <li><span>盛夏潮鞋释出 最高满298减50span>li>
                <li><span>盛夏潮鞋释出 最高满298减50span>li>
                <li><span>手表配饰百货城 满298减60span>li>
            ul>
        div>
    body>
html>

2.来点样式

<style>
            body,div,a,ul,li,img{
                margin:0;
                padding:0;
            }
            ul,li{
                list-style: none;
            }
            a{
                text-decoration: none;
            }
            #wrapper{
                position: relative;
                width:1024px;
                height:580px;
                margin:0 auto;
            }
            #banner{
                position:relative;
                width:1024px;
                height:460px;
                overflow: hidden;
            }
            .imgList{
                position:relative;
                width:1024px;
                height:460px;
                overflow: hidden;
                z-index: 10;
            }
            .imgList li{
                display:inline;
                float: left;
                -webkit-animation-name:fade;
                -webkit-animation-duration: 2s;
                animation-name:fade;
                animation-duration: 2s;
            }
            /*给图片添加淡入淡出效果*/
            @-webkit-keyframes fade{
                from{
                    opacity: 0.;
                }
                to{
                    opacity: 1;
                }
            }
            @keyframes fade{
                from{
                    opacity: 0.5;
                }
                to{
                    opacity: 1;
                    }
            }
            #prev,#next{
                position:absolute;
                color:white;
                font-size:70px;
                width:55px;
                height:65px;
                background-color:black;
                z-index: 20;
                opacity: 0.2;
                text-align: center;
                line-height: 65px;
                font-weight:bold;
                cursor: pointer;
                transition:opacity 1s;
                -webkit-transition: opacity 1s;
                display:none;
            }
            /*只有当鼠标放在图片容器里的时候,上一张,下一张按钮才出现*/
            #banner:hover #prev{
                display:block;
            }
            #banner:hover #next{
                display:block;
            }
            #prev{
                left:0;
                top:200px;
                -webkit-animation-name:leftIn;
                -webkit-animation-duration: 1s;
                animation-name:leftIn;
                animation-duration: 1s;
            }
            /*给上一张按钮添加进入时动画*/
            @-webkit-keyframes leftIn{
                from{
                    left:-55px;
                }
                to{
                    left:0px;
                }
            }
            @keyframes leftIn{
                from{
                    left:-55px;
                }
                to{
                    left:0px;
                }
            }
            #next{
                right:0;
                top:200px;
                -webkit-animation-name:rightIn;
                -webkit-animation-duration: 1s;
                animation-name:rightIn;
                animation-duration: 1s;
            }
            /*给下一张按钮添加进入时动画*/
            @-webkit-keyframes rightIn{
                from{
                    right:-55px;
                }
                to{
                    right:0px;
                }
            }
            @keyframes rightIn{
                from{
                    right:-55px;
                }
                to{
                    right:0px;
                }
            }
            #prev:hover,#next:hover{
                opacity: 0.7;
            }
            .infoList{
                position:absolute;
                top:15px;
                left:15px;
                font-size:18px;
                color:white;
                z-index:20;
            }
            .infoList li{
                display:none;
            }
            .infoList .infoOn{
                display:inline;
            }
            .indexList{
                position: absolute;
                margin-top:5px;
                height:35px;
                width:100%;
            }
            .indexList li{
                display:inline;
                text-align: center;
                line-height:35px;
                float:left;
                cursor:pointer;
                opacity: 0.8;
            }
            .indexList li span{
                height:30px;
                padding:0 11px;
                line-height:30px;
                border-left: solid 1px rgba(0,0,0,0.3);
            }
            .indexList li .indexOn{
                border:none;
            }
            .indexList li:hover{
                border-bottom: solid 4px deeppink;
                opacity: 1;
            }
            .active{
                border-bottom: solid 4px deeppink;
                opacity: 1;
            }
        style>

3.现在用jQuery来绑定事件了

<script type="text/javascript" src="js/jquery-3.2.1.min.js" >script>
<script>
    $(document).ready(function(){
        var curIndex=0;//定义一个全局变量,也就是图片的索引值
        imgLen=$(".imgList li").length;//获取图片的张数
        /*1.用定时器做一个自动播放函数,当图片索引值小于图片长度-1的时候,就让索引值自增,当它等于图片长度,也就是到最后一张图片的时候,让它为0,从第一张图片重新开始*/
        var autoChange=setInterval(function(){
            if(curIndex1){
                curIndex++;
            }
            else{
                curIndex=0;
            }
            changeTo(curIndex);
        },3000);
        /*2.给上一张按钮添加鼠标悬浮事件,当鼠标悬浮时,清除定时器,鼠标移开时,调用函数重新开始自动播放*/
        $("#prev").hover(function(){
            clearInterval(autoChange);
        },function(){
            autoChangeAgain();
        });
        /*3.给上一张按钮添加鼠标点击事件,当索引值>0的时候,就让它自减,否则也就是已经到第一张图片的时候让索引值为图片长度减1,也就是回到最后一张图片,再将索引值传给changeTo函数*/
        $("#prev").click(function(){
            curIndex=(curIndex>0)?(--curIndex):(imgLen-1);
            changeTo(curIndex);
        })
        /*4.给下一张按钮添加鼠标悬浮事件*/
        $("#next").hover(function(){
            clearInterval(autoChange);
        },function(){
            autoChangeAgain();
        });
        /*5.给下一张按钮绑定鼠标点击事件*/
        $("#next").click(function(){
            curIndex=(curIndex1)?(++curIndex):0;
            changeTo(curIndex);
        })
        /*6.给下面的文字列表绑定事件,当鼠标悬浮到某个li上面时清除定时器,移开又自动播放*/
        $(".indexList").find("li").each(function(item) {    
            $(this).hover(function() {      
                clearInterval(autoChange);      
                changeTo(item);      
                curIndex = item;    
            }, function() {      
                autoChangeAgain();    
                });  
            });
        /*7.定义一个重新自动播放函数*/
        function autoChangeAgain(){
            autoChange=setInterval(function(){
                if(curIndex1){
                    curIndex++;
                }
                else{
                    curIndex=0;
                }
                changeTo(curIndex);
            },3000);
        };
        /*8.定义一个切换图片的函数*/
        function changeTo(num){
            $(".imgList").find("li").css("display","none").eq(num).css("display","block");
            $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
            $(".indexList").find("li").removeClass("active").eq(num).addClass("active");
        };
    });
script>

jQuery实现图片轮播(淡入淡出效果)_第1张图片

最后附上完整代码

<html>
    <head>
        <meta charset="UTF-8">
        <title>title>
        <style>
            body,div,a,ul,li,img{
                margin:0;
                padding:0;
            }
            ul,li{
                list-style: none;
            }
            a{
                text-decoration: none;
            }
            #wrapper{
                position: relative;
                width:1024px;
                height:580px;
                margin:0 auto;
            }
            #banner{
                position:relative;
                width:1024px;
                height:460px;
                overflow: hidden;
            }
            .imgList{
                position:relative;
                width:1024px;
                height:460px;
                overflow: hidden;
                z-index: 10;
            }
            .imgList li{
                display:inline;
                float: left;
                -webkit-animation-name:fade;
                -webkit-animation-duration: 2s;
                animation-name:fade;
                animation-duration: 2s;
            }
            /*给图片添加淡入淡出效果*/
            @-webkit-keyframes fade{
                from{
                    opacity: 0.;
                }
                to{
                    opacity: 1;
                }
            }
            @keyframes fade{
                from{
                    opacity: 0.5;
                }
                to{
                    opacity: 1;
                    }
            }
            #prev,#next{
                position:absolute;
                color:white;
                font-size:70px;
                width:55px;
                height:65px;
                background-color:black;
                z-index: 20;
                opacity: 0.2;
                text-align: center;
                line-height: 65px;
                font-weight:bold;
                cursor: pointer;
                transition:opacity 1s;
                -webkit-transition: opacity 1s;
                display:none;
            }
            /*只有当鼠标放在图片容器里的时候,上一张,下一张按钮才出现*/
            #banner:hover #prev{
                display:block;
            }
            #banner:hover #next{
                display:block;
            }
            #prev{
                left:0;
                top:200px;
                -webkit-animation-name:leftIn;
                -webkit-animation-duration: 1s;
                animation-name:leftIn;
                animation-duration: 1s;
            }
            /*给上一张按钮添加进入时动画*/
            @-webkit-keyframes leftIn{
                from{
                    left:-55px;
                }
                to{
                    left:0px;
                }
            }
            @keyframes leftIn{
                from{
                    left:-55px;
                }
                to{
                    left:0px;
                }
            }
            #next{
                right:0;
                top:200px;
                -webkit-animation-name:rightIn;
                -webkit-animation-duration: 1s;
                animation-name:rightIn;
                animation-duration: 1s;
            }
            /*给下一张按钮添加进入时动画*/
            @-webkit-keyframes rightIn{
                from{
                    right:-55px;
                }
                to{
                    right:0px;
                }
            }
            @keyframes rightIn{
                from{
                    right:-55px;
                }
                to{
                    right:0px;
                }
            }
            #prev:hover,#next:hover{
                opacity: 0.7;
            }
            .infoList{
                position:absolute;
                top:15px;
                left:15px;
                font-size:18px;
                color:white;
                z-index:20;
            }
            .infoList li{
                display:none;
            }
            .infoList .infoOn{
                display:inline;
            }
            .indexList{
                position: absolute;
                margin-top:5px;
                height:35px;
                width:100%;
            }
            .indexList li{
                display:inline;
                text-align: center;
                line-height:35px;
                float:left;
                cursor:pointer;
                opacity: 0.8;
            }
            .indexList li span{
                height:30px;
                padding:0 11px;
                line-height:30px;
                border-left: solid 1px rgba(0,0,0,0.3);
            }
            .indexList li .indexOn{
                border:none;
            }
            .indexList li:hover{
                border-bottom: solid 4px deeppink;
                opacity: 1;
            }
            .active{
                border-bottom: solid 4px deeppink;
                opacity: 1;
            }
        style>
        <script type="text/javascript" src="js/jquery-3.2.1.min.js" >script>
        <script>
            $(document).ready(function(){
                var curIndex=0;//定义一个全局变量,也就是图片的索引值
                imgLen=$(".imgList li").length;//获取图片的张数
                /*1.用定时器做一个自动播放函数,当图片索引值小于图片长度-1的时候,就让索引值自增,当它等于图片长度,也就是到最后一张图片的时候,让它为0,从第一张图片重新开始*/
                var autoChange=setInterval(function(){
                    if(curIndex1){
                        curIndex++;
                    }
                    else{
                        curIndex=0;
                    }
                    changeTo(curIndex);
                },3000);
                /*2.给上一张按钮添加鼠标悬浮事件,当鼠标悬浮时,清除定时器,鼠标移开时,调用函数重新开始自动播放*/
                $("#prev").hover(function(){
                    clearInterval(autoChange);
                },function(){
                    autoChangeAgain();
                });
                /*3.给上一张按钮添加鼠标点击事件,当索引值>0的时候,就让它自减,否则也就是已经到第一张图片的时候让索引值为图片长度减1,也就是回到最后一张图片,再将索引值传给changeTo函数*/
                $("#prev").click(function(){
                    curIndex=(curIndex>0)?(--curIndex):(imgLen-1);
                    changeTo(curIndex);
                })
                /*4.给下一张按钮添加鼠标悬浮事件*/
                $("#next").hover(function(){
                    clearInterval(autoChange);
                },function(){
                    autoChangeAgain();
                });
                /*5.给下一张按钮绑定鼠标点击事件*/
                $("#next").click(function(){
                    curIndex=(curIndex1)?(++curIndex):0;
                    changeTo(curIndex);
                })
                /*6.给下面的文字列表绑定事件,当鼠标悬浮到某个li上面时清除定时器,移开又自动播放*/
                $(".indexList").find("li").each(function(item) {    
                    $(this).hover(function() {      
                        clearInterval(autoChange);      
                        changeTo(item);      
                        curIndex = item;    
                    }, function() {      
                        autoChangeAgain();    
                    });  
                });
                /*7.定义一个重新自动播放函数*/
                function autoChangeAgain(){
                    autoChange=setInterval(function(){
                        if(curIndex1){
                            curIndex++;
                        }
                        else{
                            curIndex=0;
                        }
                        changeTo(curIndex);
                    },3000);
                };
                /*8.定义一个切换图片的函数*/
                function changeTo(num){
                    $(".imgList").find("li").css("display","none").eq(num).css("display","block");
                    $(".infoList").find("li").removeClass("infoOn").eq(num).addClass("infoOn");
                    $(".indexList").find("li").removeClass("active").eq(num).addClass("active");
                };
            });
        script>
    head>
    <body>
        <div id="wrapper">
            <div id="banner">
                <ul class="imgList">
                    <li><a href="#"><img src="img/01.jpg" /> a>li>
                    <li><a href="#"><img src="img/02.jpg" /> a>li>
                    <li><a href="#"><img src="img/03.jpg" /> a>li>
                    <li><a href="#"><img src="img/04.jpg" /> a>li>
                    <li><a href="#"><img src="img/05.jpg" /> a>li>
                ul>
                <span id="prev">>
                <span id="next">>span>
                <ul class="infoList">
                    <li class="infoOn">1/5li>
                    <li>2/5li>
                    <li>3/5li>
                    <li>4/5li>
                    <li>5/5li>
                ul>
            div>
            <ul class="indexList">
                <li class="active"><span class="indexOn">迪桑娜VIP大牌日span>li>
                <li><span>年终回馈日 会员特价权span>li>
                <li><span>盛夏潮鞋释出 最高满298减50span>li>
                <li><span>盛夏潮鞋释出 最高满298减50span>li>
                <li><span>手表配饰百货城 满298减60span>li>
            ul>
        div>
    body>
html>

你可能感兴趣的:(web前端)