zoukankan      html  css  js  c++  java
  • javascript淡入淡出的效果轮换转播

    一向我都不擅长做这种含setTimeout 和setInterval结合的例子,绕呼一会就把自己绕进去了,这次因为工作需要,我提前写个demo出来,防止到时候时间紧完不成。

    没怎么看网上的例子,先自己写了下

    自动的淡入淡出已经做出来了,但是点击切换到指定图片还没做出来,今天下午没什么精神,中午吃多了撑的不舒服,没思考的精力了。

    先贴下代码:

    <!DOCTYPE html>
    <html>
    <head>
        <title> fade in</title>
        <style>
        #out{width:600px; height:200px;margin:0 auto; border:1px solid #333; overflow:hidden}
        #out ul{margin:0; padding:0;position:relative;}
        #out li{list-style:none;float:left;position:absolute;}
        </style>
    </head>
    <body>
    <div id="out">
    <ul>
    <li><a href="javascript:void(0)"><img src="image/1.jpg" width="600" height="200"/>0</a></li>
    <li><a href="javascript:void(0)"><img src="image/2.jpg" width="600" height="200"/>1</a></li>
    <li><a href="javascript:void(0)"><img src="image/3.jpg" width="600" height="200"/>2</a></li>
    <li><a href="javascript:void(0)"><img src="image/4.jpg" width="600" height="200"/>3</a></li>-->
    </ul>
    </div>
    <ul >
    <li><a href="javascript:void(0);" onclick="showCertainImage(0)">0</a></li>
    <li><a href="javascript:void(0);" onclick="showCertainImage(1)">1</li>
    <li><a href="javascript:void(0);" onclick="showCertainImage(2)">2</a></li>
    <li><a href="javascript:void(0);" onclick="showCertainImage(3)">3</a></li>
    </ul>
    </body>
    <script>
        function Id(name){
            return document.getElementById(name);
        }    
        function setOpacity(ev, v){
            ev.filters ? ev.style.filter = 'alpha(opacity=' + v + ')' : ev.style.opacity = v / 100;
        }
        
        var out = Id("out");
        var li = out.getElementsByTagName('li');
        var len = li.length;
        
        for(var i=0; i<len; i++){
            li[i].style.zIndex = len-i;
        }
        
        function fadeIn(index){        
            var num = 100;
            var next = index+1;
            if(index+1 == len){
                next = 0;            
            }
            setOpacity(li[next], 100);
            li[index].style.zIndex = len-index;                        
            addTimer = setInterval(function(){            
                if(num==0){
                    clearTimeout(addTimer);
                    li[index].style.zIndex = index;    
                }
                setOpacity(li[index],num);
                num-=10;            
            },50);        
        }
        
        var rax = 0;
        
        function changeImage(x){    
            if(!x){
                x = rax;
            }
            timer = setTimeout(function(){        
                if(rax == len){ 
                    rax = 0;                
                }        
                fadeIn(rax); 
                rax++;                     
                changeImage(rax);
            },5000)            
        }
        
        function showCertainImage(index){
            if(timer){
                clearTimeout(timer);
            }
            /*if(index == 0){
                setOpacity(li[index],100);
                for(var i=1; i<len; i++){
                    setOpacity(li[i],0);
                }
            }
            for(var i=0; i<index; i++){
                setOpacity(li[i],0);
                setOpacity(li[index],100);
            }
            changeImage(index);
            */
        }
        
        changeImage();
    </script>
    </html>

    这个是全部的代码,逐段的解释下给自己听:

    function fadeIn(index){        
            var num = 100;
            var next = index+1;
            if(index+1 == len){
                next = 0;            
            }
            setOpacity(li[next], 100);
            li[index].style.zIndex = len-index;                        
            addTimer = setInterval(function(){            
                if(num==0){
                    clearTimeout(addTimer);
                    li[index].style.zIndex = index;    
                }
                setOpacity(li[index],num);
                num-=10;            
            },50);        
        }

    这段是单个图片的淡入过程,淡入淡出我在写的过程中发现还涉及到了z-index这个属性,这个使问题稍微讨厌了一点。 setOpacity(li[next], 100)的作用是:首先让下一张

    图片显示出来,这样才能使该图有一个慢慢隐退到下一张的感觉。

    function changeImage(x){    
            if(!x){
                x = rax;
            }
            timer = setTimeout(function(){        
                if(rax == len){ 
                    rax = 0;                
                }        
                fadeIn(rax); 
                rax++;                     
                changeImage(rax);
            },5000)            
        }

    这个就是整体的轮换了,最初的时候是没有x这个内置参数的,后来在指定切换图片时,发现需要告之从哪张开始轮换,就加了这个参数。

    目前整体自动切换的效果已经出来了,但切换到指定图片的效果尚不理想。先记录下,待会去网上找找看下别人的例子是如何处理的,我再来继续完善。

     

  • 相关阅读:
    Android编译系统分析四:实战-新增一个产品
    Android编译系统分析三:make完整编译android系统
    Android编译系统分析二:mm编译单个模块
    【python】-文件操作1
    【python】-文件操作
    【python】-集合操作
    【python】-字典的使用
    【python】-字符串常用操作
    【python】-编程练习
    解释型语言与编译型语言
  • 原文地址:https://www.cnblogs.com/lxin/p/2601275.html
Copyright © 2011-2022 走看看