• JQuery 图片轮播


    图片轮播相信很多人都会直接去下载一个插件,改改就行了。但是,今天要给大家讲一下具体的原理。

    具体的图如下面:

    实现图片轮播,最重要的是控制好JQuery的代码,主要有以下几个要点需要注意:

    1. 图片在没有鼠标事件的情况下,要实现图片轮播,就需要setInterval()定时函数进行轮播

    2. 在图片轮播的时候,最下面的文字要变化,角标也需要变化

    3. 点击左右箭头切换上一张或者下一张图片,要注意让自动轮播停止,给左右箭头绑定上一张或者下一张的事件

    4.鼠标移动到任意一个角标,相应的图片要变,文字也要变

    要了解的技术:

    1.setInterval()函数的用法

    2.JQuery的find()函数

    3.JQuery的romveClass()函数

    4.JQuery的addClass()函数

    5.JQuery的eq()函数

    6.JQuery的each()函数

    代码展示:

    html代码:

    <body>
    
            <div id="wrapper">
                <div id="banner">
    <!-- 轮播图片 -->
    <ul class="imgList"> <li><img src="img/img1.jpg" width="400px" height="300px" alt="puss image1" /></li> <li><img src="img/img2.jpg" width="400px" height="300px" alt="puss image2" /></li> <li><img src="img/img3.jpg" width="400px" height="300px" alt="puss image3" /></li> <li><img src="img/img4.jpg" width="400px" height="300px" alt="puss image4" /></li> <li><img src="img/img5.jpeg" width="400px" height="300px" alt="puss image5" /></li> </ul> <!-- 左右箭头的图片 --> <img src="img/left.png" width="25px" height="60px" id="prev" /> <img src="img/right.png" width="25px" height="60px" id="next" /> <div id="bg"></div> <!-- 轮播文字 --> <ul class="infoList"> <li class="infoOn">puss image1</li> <li>puss image2</li> <li>puss image3</li> <li>puss image4</li> <li>puss image5</li> </ul> <!-- 轮播角标 --> <ul class="indexList"> <li class="indexOn">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </div> </div> </body>

    CSS样式:

    body,div,ul,li,img{margin: 0;padding: 0;}
    
    ul,li{list-style: none;}
    
    #wrapper{position: relative;margin: 30px auto;width: 400px;height: 300px;border: 0px solid red;}
    
    #banner{position: relative;width: 400px;height: 300px;border: 0px solid green;overflow: hidden;}
    
    .imgList{position: relative;width: 2000px;height: 300px;z-index: 10;overflow: hidden;}
    
    .imgList li{float: left;display: inline;}
    
    #prev,#next{position: absolute;top: 120px;z-index: 20;cursor: pointer;opacity: 0.2;filter:alpha(opacity=20);}
    #prev{left: 10px;}
    #next{right: 10px;}
    
    #prev:hover,#next:hover{opacity: 0.6;filter:alpha(opacity=60);}
    
    #bg{position: absolute;bottom: 0;width: 400px;height: 40px;z-index: 20;background: black;opacity: 0.4;filter: alpha(opacity=40);}
    
    .infoList{position: absolute;left: 10px;bottom: 10px;z-index: 30;}
    
    .infoList li{display: none;}
    
    .infoList .infoOn{display: inline;color: white;}
    
    .indexList{position: absolute;right: 10px;bottom: 10px;background: b;z-index: 30;}
    
    .indexList li{display: inline;cursor: pointer;background: gray;margin-left: 5px;padding: 2px 4px;}
    
    .indexList .indexOn{background: wheat;font-weight: bold;}

    js代码:

    <script type="application/javascript" src="js/jquery-1.9.1.js"></script>
            <script type="application/javascript">
                $(function() {
                    var count = 0;
                    var imgLength = $(".imgList li").length;
    
                    //alert("length:"+imgLength);
                 
                    /**
                     * 1.让图片通过setInterval()定时函数,实现图片自动滑动
                     * 2.点击左右按钮时,清除自动轮播,绑定左右切换事件
                     * 3.自动轮播事件,要注意图片动,相应的文字描述、角标也要跟随变化
                     */
                    var autoChange = setInterval(function() {
                        if(count < imgLength - 1) {
                            count++;
                        } else {
                            count = 0;
                        }
    
                        //调用变化函数
                        toChange(count);
                    }, 2500);
                    
                    /**
                     * 左箭头事件,鼠标划入,停止轮播;滑出,开始轮播
                     * 点击左箭头,表示上一页,这时要确定上一张图片的count数为多少
                     * @param {Object} count
                     */
                    $("#prev").hover(function(){
                        clearInterval(autoChange);
                    },function(){
                        autoChangeAgain();
                    });
                    
                    $("#prev").click(function(){
                        count = (count >0)? (--count) : (imgLength-1);
                        toChange(count);
                    });
                    
                    /**
                     * 右箭头事件,鼠标划入,停止轮播;滑出,开始轮播
                     * 点击右箭头,表示下一页,这时要确定下一张图片的count数为多少
                     * @param {Object} count
                     */
                    
                    $("#next").hover(function(){
                        clearInterval(autoChange);
                    },function(){
                        autoChangeAgain();
                    });
                    
                    $("#next").click(function(){
                        count = (count < imgLength-1)? (++count) : 0;
                        toChange(count);
                    });
                    
                    /**
                     * 给下面的角标绑定滑入事件
                     */
                    $(".indexList").find("li").each(function(item){
                        $(this).hover(function(){
                            clearInterval(autoChange);
                            toChange(item);
                            count = item;
                        },function(){
                            autoChangeAgain();
                        });
                    });
                    
                    //这个函数要放在里面才可以,因为autoChange、count、ImLength参数都是提前声明好的,需要传承上一个调用函数的数据
                    function autoChangeAgain(){
                        autoChange = setInterval(function() {
                            if(count < imgLength - 1) {
                                count++;
                            } else {
                                count = 0;
                            }
        
                            //调用变化函数
                            toChange(count);
                        }, 2500);
                    }
                });
                
                function toChange(count) {
                    /**
                     * 逻辑处理:
                     * 1.图片切换
                     * 2.文字切换
                     * 3.角标切换
                     */
                    var moveLen = count * 400;
                    $(".imgList").animate({
                        left: "-" + moveLen + "px"
                    }, 500);
                    $(".infoList").find("li").removeClass("infoOn").eq(count).addClass("infoOn");
                    $(".indexList").find("li").removeClass("indexOn").eq(count).addClass("indexOn");
                }
            </script>

    以上是具体的实现过程

  • 相关阅读:
    https authorization basic
    第二十一章 单例模式
    第十九章 组合模式
    第十八章 备忘录模式
    第十七章 适配器模式
    第十六章 状态模式
    新博客~
    CF922D Robot Vacuum Cleaner
    BZOJ1767 [CEOI2009]harbingers
    树的直径学习笔记
  • 原文地址:https://www.cnblogs.com/wll-cs/p/6738625.html
Copyright © 2020-2023  润新知