zoukankan      html  css  js  c++  java
  • js学习总结----jquery版本轮播图及extend扩展

    具体代码如下:

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            *{
                margin:0;
                padding:0;
                font-size:14px;
                -webkit-user-select:none;
            }
            ul,li{
                list-style:none;
            }
            img{
                display:block;
                border:none;
            }
            a{
                text-decoration: none;
            }
            .banner{
                position:relative;
                margin:10px auto;
                1000px;
                height:300px;
                overflow:hidden;
            }
            .bannerInner{
                100%;
                height:100%;
                background:url("../img/default.gif") no-repeat center center;
            }
            .bannerInner div{
                position:absolute;
                top:0;
                left:0;
                z-index:0;
                100%;
                height:100%;
                opacity: 0;
                filter:alpha(opacity=0);
            }
            .bannerInner div img{
                display:none;
                100%;
                height:100%;
            }
            .banner .bannerTip{
                position:absolute;
                right:20px;
                bottom:20px;
                z-index:10;
                overflow:hidden;
            }
            .banner .bannerTip li{
                float:left;
                margin-left:10px;
                18px;
                height:18px;
                background:lightblue;
                border-radius:50%;
                cursor:pointer;
            }
            .banner .bannerTip li.bg{
                background:orange;
            }
            .banner a{
                display:none;
                position:absolute;
                top:50%;
                margin-top:-22.5px;
                z-index:10;
                30px;
                height:45px;
                opacity: 0.5;
                filter:alpha(opacity=50);
                background-image:url('../img/pre.png');
    
            }
            .banner a.bannerLeft{
                left:20px;
                background-position:0 0;
            }
            .banner a.bannerRight{
                right:20px;
                background-position:-50px 0;
            }
            .banner a:hover{
                opacity: 1;
                filter:alpha(opacity=100);
            }
        </style>
    </head>
    <body>
        <div class='banner' id='bannerFir'>
            <div class='bannerInner'>
                <div><img src="" alt="" trueImg='img/banner1.jpg'></div>
                <div><img src="" alt="" trueImg='img/banner2.jpg'></div>
                <div><img src="" alt="" trueImg='img/banner3.jpg'></div>
                <div><img src="" alt="" trueImg='img/banner4.jpg'></div>
            </div>
            <ul class='bannerTip'>
                <li class='bg'></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <a href="javascript:;" class='bannerLeft'></a>
            <a href="javascript:;" class='bannerRight'></a>
        </div>
    
        <script>
            jQuery.fn.extend({
                banner:myBanner
            })
            //通过jQuery选择器或者筛选的方法获取到的jQuery集合是不存在dom映射机制的,之前获取到的dom集合,之后再页面中HTML结构改变了,集合中的内容不会跟着自动发生变化(JS获取的元素集合有DOM映射的机制)
            function myBanner(selector,ajaxURL,interval){
                var $banner = $("#"+selector);
                var $bannerInner = $banner.children(".bannerInner"),$divList = null,$imgList = null;
                var $bannerTip = $banner.children(".bannerTip"),$oLis = null
                var $bannerLeft = $banner.children(".bannerLeft"),$bannerRight = $banner.children(".bannerRight")
    
                //1、Ajax读取数据
                var jsonData = null;
                $.ajax({
                    url:ajaxURL+"?_="+Math.random(),
                    type:'get',
                    dataType::"json",
                    async:false,//当前的请求是同步的
                    success:function(data){
                        jsonData = data;
    
                    }
                })
                //2、实现数据的绑定
                function bindData(){
                    var str = "",str2 = "";
                    if(jsonData){
                        //原生的jsonData使用$.each()
                        $.each(jsonData,function(index,item){
                            str+='<div><img src="" alt="" trueImg="'+item["img"]+'"></div>';
                            index===0?str2+='<li class="bg"></li>':str2+='<li></li>'
                        })
    
                        $bannerInner.html(str);
                        $bannerTip.html(str2);
                        $divList = $bannerInner.children("div")
                        $imgList = $bannerInner.find('img')
                        $oLis = $bannerTip.children("li")
                    }
                }
                //3、实现图片的延迟加载
                window.setTimeout(lazyImg,500);
                function lazyImg(){
                    //jquery元素集合 直接写$imgList.each()
                    $imgList.each(function(index,item){
                        var _this = this;
                        var oImg = new Image;
                        oImg.src = $(this).attr("trueImg");//$(this)等价于$(item)
                        oImg.onload = function(){
                            $(_this).prop('src',this.src).css("display","block")//内置属性使用prop
                        }
                    })
                    $divList.eq(0).css("zIndex",1).animate({opacity:1},300);
                }
                //封装一个轮播图切换的效果
                function changeBanner(){
                    var $curDiv = $divList.eq(step);
                    $curDiv.css("zIndex",1).siblings().css("zIndex",0);
                    $curDiv.animate({opacity:1},300,function(){
                        $(this).siblings().css("opacity",0)
                    })
                    $oLis.eq(step).addClass("bg").siblings().removeClass('bg')
                }
                //4、实现自动轮播
                interval = interval || 3000;
                var step = 0,autoTimer = null;
                autoTimer = window.setInterval(autoMove,interval)
                function autoMove(){
                    if(step === jsonData.length-1){
                        step = -1;
                    }
                    step++;
                    changeBanner();
                }
                //5、控制左右按钮的显示隐藏和自动轮播的开始和暂停
                $banner.on('mouseover',function(){
                    window.clearInterval(autoTimer);
                    $bannerLeft.css("display","block")
                    $bannerRight.css("display","block")
                }).on('mouseout',function(){
                    autoTimer = window.setInterval(autoMove,interval);
                    $bannerLeft.css("display","none")
                    $bannerRight.css("display","none")
    
                })
                //6、实现焦点切换
                $oLis.on('click',function(){
                    step = $(this).index();
                    changeBanner();
                })
    
                //7、实现左右切换
                $bannerRight.on('click',autoMove);
                $bannerLeft.on('click',function(){
                    if(step===0){
                        step = jsonData.length;
                    }
                    step--;
                    changeBanner();
                });
    
            }
    
    
            //外部使用
            $().banner("bannerFir","json/banner.txt",1000)
        </script>
    </body>
    </html>
  • 相关阅读:
    Android:Unable to find explicit activity class报错
    家庭记账本2
    家庭记账本开发
    Android Studio中TableLayout(表格布局)
    Android Studio中View与ViewGroup的概念
    Android Studio反编译APK获取代码&资源
    Android程序签名打包
    Android Studio工程相关解析(各种文件,资源访问)
    Android Studio 的SDK更新不了问题解决
    模块
  • 原文地址:https://www.cnblogs.com/diasa-fly/p/7200783.html
Copyright © 2011-2022 走看看