zoukankan      html  css  js  c++  java
  • 自定义幻灯片

    其实说实话,掌握了制作幻灯片的逻辑,和方法,那么脑海中能够想到的幻灯片效果大部分其实都可以实现的。

    我们现在要定义的幻灯片是这样的

    一个图片幻灯片展示区,和一个底部时间轴指示器。这个例子中有三张图轮播,那么当指示器时间轴跑到1/3的时候,切换第二张,当跑到2/3的时候,切换第三张,当时间轴跑完的时候切换回第一张,同时时间轴从0开始继续跑。可以在脑海中想象一下这个效果,还是蛮不错的吧。

    还是老套路,上布局html

    <div id="img_tab">
                <ul>
                    <li><p>图片一</p></li>
                    <li><p>图片二</p></li>
                    <li><p>图片三</p></li>        
                </ul>
                <div id="timeline"><span></span></div>
    </div>

    实在是太简单了,布局就这么简单,图片轮播部分三个li,然后时间轴部分里面包裹一个span,相信聪明的朋友知道时间轴是们回事,其实就是span的宽度。

    接下来就是看看css部分吧,由于图片轮播不分模拟的是节操精选首页幻灯片的切换效果,是可以用css3实现的,不同的渐隐渐显不太好玩了,左右切换也不新鲜,所以换种效果还是蛮好玩的。

    动手能力强的同学可以复制源码过去,看看效果之后自己实现。

    #img_tab{width:100%; height:323px; background:#EEE;}
                #timeline{width:100%; height:3px; background:#FFF;}
                #timeline > span{display:block; width:0; height:3px; background:#F00;box-shadow:0 0 5px #F00;}
                
                #img_tab ul{width:100%; height:300px; overflow:hidden;}
                #img_tab ul li{ 
                    width:100%; 
                    height:0px;
                    overflow:hidden;
                    /*border-radius:5px;*/
                    -webkit-transition: all 1s ease;
                    -moz-transition: all 1s ease;
                    -ms-transition: all 1s ease;
                    -o-transition: all 1s ease;
                    transition: all 1s ease;
                }
                #img_tab ul li p{ width:100%; height:50px; background:rgba(0,0,0,0.3); color:#FFF; text-align:center; line-height:50px;}
                #img_tab ul li:nth-child(1){ background:url(images/1.jpg) center;background-size:100%;}
                #img_tab ul li:nth-child(2){ background:url(images/2.jpg) center;background-size:100%;}
                #img_tab ul li:nth-child(3){ background:url(images/3.jpg) center;background-size:100%;}
                #img_tab ul li.activ{ height:300px;}

    布局好之后就是上js逻辑了,看大招,别激动,哥哥也是js菜菜,没有jq是在做不出来像样的效果,原生的js手抖。哈哈,所以还是用下jquery吧。

    <script src="js/jquery-1.7.2.min.js"></script>

    千万别忘记,然后才是正菜

    $(function(){
                    
                    $("#img_tab > ul >li").eq(0).addClass("activ");
                    var index = 0;
                    var num = $("#img_tab > ul >li").length; 
                    $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);
                    var timer = setInterval(autoPlay,5000);
                    
                    
                    function autoPlay(){
                        if(index<num-1){
                            index++;
                            if(index===num-1){//当进度条跑完的时候拉回0
                                $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000,function(){
                                    $("#timeline >span").css({"width":0});
                                    });
                                }else{
                                $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);            
                                    }
                            
                            }
                        else{
                            index = 0;
                            $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);        
                            }
                            $("#img_tab > ul >li").removeClass("activ");    
                            $("#img_tab > ul >li").eq(index).addClass("activ");
                        }
                    });

    我靠,不写注释的程序猿正的不是个好程序员啊,好吧,我讨厌自己这样子,还好是个简单的逻辑,定时器之前都是初始化过程,定时器之后就是真正跑的逻辑

    设置一个定时器,每5s让index++,如果index<2;index++;然后让对应index的图片高度300,其他高度为0;然后时间轴跑到对应index/3的宽度,注意时间轴运动的时间也是5s。跟定时器的时间是一样的。

    最后注意的一点就是当index===2的时候,时间轴运动到100%之后记得把时间轴拉回到0 的位置。

    最后上个全码,复制粘贴过去就ok

    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <!--屏幕适配-->
            <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
            <title>自定义幻灯片</title>
            <style>
                *{margin: 0; padding:0; list-style: none; font-size: 100%; font-family: "微软雅黑";}
                html{font-size: 62.5%;}
                body{width: 100%; height: 100%; background:#EEE;}
    
                #img_tab{width:100%; height:323px; background:#EEE;}
                #timeline{width:100%; height:3px; background:#FFF;}
                #timeline > span{display:block; width:0; height:3px; background:#F00;box-shadow:0 0 5px #F00;}
                
                #img_tab ul{width:100%; height:300px; overflow:hidden;}
                #img_tab ul li{ 
                    width:100%; 
                    height:0px;
                    overflow:hidden;
                    /*border-radius:5px;*/
                    -webkit-transition: all 1s ease;
                    -moz-transition: all 1s ease;
                    -ms-transition: all 1s ease;
                    -o-transition: all 1s ease;
                    transition: all 1s ease;
                }
                #img_tab ul li p{ width:100%; height:50px; background:rgba(0,0,0,0.3); color:#FFF; text-align:center; line-height:50px;}
                #img_tab ul li:nth-child(1){ background:url(images/1.jpg) center;background-size:100%;}
                #img_tab ul li:nth-child(2){ background:url(images/2.jpg) center;background-size:100%;}
                #img_tab ul li:nth-child(3){ background:url(images/3.jpg) center;background-size:100%;}
                #img_tab ul li.activ{ height:300px;}
            </style>
            <script src="js/jquery-1.7.2.min.js"></script>
            <script>
                $(function(){
                    
                    $("#img_tab > ul >li").eq(0).addClass("activ");
                    var index = 0;
                    var num = $("#img_tab > ul >li").length; 
                    $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);
                    var timer = setInterval(autoPlay,5000);
                    
                    
                    function autoPlay(){
                        if(index<num-1){
                            index++;
                            if(index===num-1){//当进度条跑完的时候拉回0
                                $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000,function(){
                                    $("#timeline >span").css({"width":0});
                                    });
                                }else{
                                $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);            
                                    }
                            
                            }
                        else{
                            index = 0;
                            $("#timeline >span").animate({"width":1/num*(index+1)*100+"%"},5000);        
                            }
                            $("#img_tab > ul >li").removeClass("activ");    
                            $("#img_tab > ul >li").eq(index).addClass("activ");
                        }
                    });
            </script>
        </head>
        <body>
            <div id="img_tab">
                <ul>
                    <li><p>图片一</p></li>
                    <li><p>图片二</p></li>
                    <li><p>图片三</p></li>        
                </ul>
                <div id="timeline"><span></span></div>
            </div>
            
                
        </body>

    li的背景是图片,所以为了直接在你浏览器里直接跑起来,背景换成颜色,然后,引入jquery,你就能看到效果了。

    注明,本人js/css3特效痴迷者,有喜欢交流的,可以qq/503305196。

  • 相关阅读:
    Android OpenGL(2)
    Bootloader:BareBox
    Android OpenGL(1)
    Android脚本环境
    Android用户界面开发:事件处理
    S5PV210按键控制LED
    S5PV210控制蜂鸣器
    Windows Vista/Windows 7上安装wince5.0/6.0及SDK模拟器
    Makefile
    每日英语:Apps Reorder the Job Landscape
  • 原文地址:https://www.cnblogs.com/HDou/p/4424164.html
Copyright © 2011-2022 走看看